在开始之前我们应该先准备数据方便演示,这里我插入的了几条数据,数据如下:
db.user.insertMany( [{ name:'jack', age:22, sex:'Man', tags:['python','c++','c'], grades:[22,33,44,55], school:{ name:'shida', city:'xuzhou' } },{ name:'jhon', age:33, sex:null, tags:['python','java'], grades:[66,22,44,88], school:{ name:'kuangda', city:'xuzhou' } }, { name:'xiaoming', age:33, tags:['python','java'], grades:[66,22,44,88], school:{ name:'kuangda', city:'xuzhou' } } ] ) |
find( , )
其中 query 表示查找的条件,相当于 mysql 中 where 子句, projection 列出你想要查找的数据,格式为 db.collection.find(find(<query filter>, <projection>))
实例:
下面不带参数的查找,将会查找出所有的结果
db.find().pretty(); //输出结果 { "_id" : ObjectId("59056f81299fe049404b2899"), "name" : "jack", "age" : 22, "tags" : [ "python", "c++", "c" ], "grades" : [ 22, 33, 44, 55 ], "school" : { "name" : "shida", "city" : "xuzhou" } } |
下面找出满足 name 为 jack 的数据,并且只输出 name , age ,这里的 _id 是默认输出的,如果不想输出将将它设置为 0 ,想要输出那个字段将它设置为1
db.user.find({name:'jack'},{name:1,age:1})
//输出结果
{ "_id" : ObjectId("59056f81299fe049404b2899"), "name" : "jack", "age" : 22 }
db.user.find({name:'jack'},{name:1,age:1,_id:0})
//输出结果
{"name" : "jack", "age" : 22 }
**注意这里的一个 projection 不能 同时 指定包括和排除字段,除了排除 _id 字段。 在 显式包括 字段的映射中, _id 字段是唯一一个您可以 显式排除 的。