投射
默认情况下,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 } }