father" : {
24 "name" : "zitai",
25 "age" : 26
26 }
27 }
集合中的数据
注意字段值为null
在文档中尽量不要将值赋为null,因为进行null查询时(例如name=null),不仅会返回name值为null的文档,也会将不包含name字段的文档返回。所以应尽量避免使用null值,而应不包含这样的字段,这样就可以使用 $exists运算符进行不包含查询了。
其他数据查找操作
计算文档数
查询集合中的文档数时,可使用 db.collection_name.count() 进行计算。
若想查询符合条件的文档数时,可使用 db.collection_name.find().count() 进行计算。
对结果集进行排序
在MongoDB中对结果集进行排序时,可以用Cursor对象的 sort() 方法。sort() 方法可以按照字段的值进行升降排序。1 为升序, -1 为降序。
该方法返回的也是一个Cursor对象,可以继续使用Cursor对象的其他方法,如limit() 等。
示例:
db.num.find().sort({a:1})
限制结果集的大小
在MongoDB中想要限制结果集的数据量,可以调用Cursor对象的 limit() 方法。他可以让Cursor对象返回指定数量的文档。
该方法返回的也是一个Cursor对象,可以继续使用CUrsor对象的其他方法。
limit(number) 方法接受一个数字类型参数,即要显示的文档数。
db.collection_name.find().limit(number)
限制返回的字段(投影)
为了限制文档检索时返回的数据量,只获得有用的信息,抛除无效信息,可以通过find() 方法的第二个可选参数 projection参数。
在MongdoDB中使用 find() 方法时,默认是显示文档中的所有字段。可以通过给字段赋 1/true 表示包含,赋 -1/false 表示排除。
当字段包含时,只会显示包含的字段;当字段排除时,会显示出排除外的所有字段。但是在同一个表达式中,不能同时指定包含和排除。
示例:
db.student.find({},{name:1})
结果集分页
为减少返回的文档数,可以对结果集进行分页。跳过部分文档,直接显示后面的部分文档。
要进行分页显示可以用 Cursor对象的 limit() 方法和 skip() 方法。
skip() 方法可以指定在返回文档前跳过多少个文档。
db.collection_name.find().skip(number).limit(number)
对数据进行分页时,可以调用方法 sort() 来确保数据的排列顺序不变。
返回某个字段的值
在MongoDB中,可以获取一组文档中某个字段的不同值列表。
Collection对象的 distinct() 方法可以找出指定字段的不同值列表。这种方法的语法为:
db.collection_name.distinct( key,[query] )
- key:指定要获得值的字段
- query:表示查询条件。
示例:
$type操作符
$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。
示例:
想要获取name值为string类型的数据,可以使用命令
db.aaa.find({"name":{$type:2}})
或
db.aaa.find({"name":{$type:'string'}})