类:Mongoid::Attributes::Projector Private
- 继承:
-
对象
- 对象
- Mongoid::Attributes::Projector
- 定义于:
- lib/mongoid/attributes/projector.rb
Overview
此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。
该模块定义投影助手。
投影规则并非无足轻重。 请参阅www.mongodb.com/zh-cn/docs/manual/reference/method/db。 集合.find/#find-projection 以获取服务器文档。 4.4服务器(可能还有所有较旧的服务器)要求内容字段的投影要么是排除性的,要么是包含性的,即不能在同一查询中混合排除和包含。 但是,可以在包含内容字段的投影中排除_id 。 截至撰写本文时,除0和1之外的整数投影值没有正式记录;请参阅 DOCSP- 15266 。 除了点表示法之外, 4.4服务器还允许嵌套哈希投影规范,我认为 Mongoid 尚无法处理此问题。
实例属性摘要折叠
- # content_projection ⇒ 对象 只读 private
- # id_projection_value ⇒ 对象 只读 private
实例方法摘要折叠
-
#attribute_or_path_allowed? (name) ⇒ true | false
private
确定已配置的投影(如果有)是否支持指定的属性或点表示法路径。
-
#初始化(投影) ⇒ 投影器
构造函数
private
Projector 的新实例。
构造函数详情
#初始化(投影) ⇒投影器
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回 Projector 的新实例。
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/mongoid/attributes/projector.rb', line 24 def 初始化(投影) if 投影 @content_projection = 投影.dup @content_projection.删除('_id') @id_projection_value = 投影['_id'] else @content_projection = nil @id_projection_value = nil end end |
实例属性详细信息
# content_projection ⇒对象(只读)
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
36 37 38 |
# File 'lib/mongoid/attributes/projector.rb', line 36 def content_projection @content_projection end |
# id_projection_value ⇒对象(只读)
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
35 36 37 |
# File 'lib/mongoid/attributes/projector.rb', line 35 def id_projection_value @id_projection_value end |
实例方法详细信息
#attribute_or_path_allowed? (name) ⇒ true | false
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
确定已配置的投影(如果有)是否支持指定的属性或点表示法路径。
如果没有配置的投影,则返回 true。
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/mongoid/attributes/projector.rb', line 48 def attribute_or_path_allowed?(名称) # 对_id的特殊处理。 if 名称 == '_id' 结果 = 除非 id_projection_value.nil? value_inclusionary?(id_projection_value) else true end return 结果 end if content_projection.nil? # 无投影(而不是空投影)。 # 允许使用所有属性。 return true end # 查找与请求的名称/路径匹配或是其父项的项。 # 这会处理以下情况:示例,投影为 # {foo: true},我们想知道是否允许 foo.bar。 列项, 值 = content_projection.检测 do |路径, 值| (名称 + ' 。 ').start_with?(路径 + ' 。 ') end if 列项 return value_inclusionary?(值) end if content_inclusionary? # 查找作为请求名称/路径的严格子项的项目。 # 这会处理以下情况:示例,投影为 # {"foo.bar" => true},我们想知道是否允许使用 foo。 #(它是一个条形图的容器。) 列项, 值 = content_projection.检测 do |路径, 值| (路径 + ' 。 ').start_with?(名称 + ' 。 ') end if 列项 return true end end !content_inclusionary? end |