MongoDB shell 查询选择器?

MongoDB shell query selector?

此查询将只查询 return 满足两个键的文档,还是将显示只包含一个键的文档?

db.collection.findOne ( {price : 1, age : 1} )

空查询选择器参数将如何反映在结果上?

db.collection.findOne ( {}, {price : 1, age : 1} )

1) 此查询 db.collection.findOne ( {price : 1, age : 1} ) 将 return 满足两个键 price equals 1 AND age equals 1 的文档 如果您想使用 OR 匹配而不是使用此语法:

db.collection.findOne ( {
  $or: [
     { name: 1 },
     { age: 1 }
  ]
}

2) findOne的第二个参数是projection。根据文档

One document that satisfies the criteria specified as the first argument to this method. 
If you specify a projection parameter, findOne() returns a document that only contains the
projection fields. The _id field is always included unless you explicitly exclude it.

这意味着如果您使用第二个参数,它将return仅匹配此参数

的字段
db.collection.findOne({ name: 1, age: 1 }, { name: 1 }) 

它将return只包含_idname字段的文档,满足姓名和年龄

给定 db.collection.findOne(<criteria>, <projection>):

条件参数

此查询将return第一个满足两个以下条件的文档,即age==15price==0.5:

db.collection.findOne( {price : 0.5, age : 15} )

投影参数

投影参数定义您要在响应中显示的字段。您可以包含一个参数(在您的查询中为其指定 1true 的值)或排除一个参数(在您的查询中为其指定 0false 的值).

所以查询:

db.collection.findOne ( {}, {price : 1, age : 1} )

将 return 您的 collection 的第一项(由 {} 查询),仅显示 priceage 字段。

参考 the fine manual