投影
默认情况下,MongoDB 的查询返回所有匹配文档的字段。为了限制 MongoDB 发送到应用程序的数据量,您可以在查询操作中包含一个投影 文档。
投影文档
投影文档限制了返回所有匹配文档的字段。投影文档可以指定包含或排除字段,其形式如下
{ 'projection': { field1: <value>, field2: <value> ... } }
<value>
可以是0
(或false
)来排除该字段,或者1
(或true
)来包含它。除了_id
字段外,您不能在同一投影文档中同时包含和排除。
示例
以下代码示例使用了restaurants
样本数据集。
要返回匹配查询筛选器的文档的name
、cuisine
和_id
字段,明确在投影文档中包含name
和cuisine
字段。除非特别排除,否则_id
字段会自动包含。
client = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'test') collection = client[:restaurants] collection.find({}, { 'projection' => { 'name' => 1, 'cuisine' => 1 } }).limit(5).each do |doc| p doc end
要返回name
和cuisine
但排除所有其他字段(包括_id
),请使用以下投影文档
{ 'projection' => { 'name' => 1, 'cuisine' => 1, '_id' => 0 } }
要返回所有字段除了地址字段,请使用以下
{ 'projection' => { 'address' => 0 } }