查询指定字段
db.collection.find(query,options)
eg: db.collection.find({},{"_id":0,"field":1})
query --> 查询条件 options --> 需要显示的字段, "_id"属于自动生成的字段,可以设置为0,表示不显示。其他插入的字段,如果添加进来则设置为1,表示显示,不能设置为0.
排序 sort
db.collection.find().sort(options)
eg: db.collection.find({}).sort("_id":1)
1表示升序,-1表示降序
limit & skip
limit 限定查询返回个数,skip 限定跳过多少个,通常可以配合sort来实现分页功能。
db.collection.find().limit(*).skip(*)
索引
当我们的数据比较多的时候,索引的存在就是必须的了,它可以极大的加快查询进度。
db.collection.createIndex(keys,options)
eg: db.collection.createIndex({"name":1},{"backgroup":true})
这里,mongoDB自动创建的_id也是索引,不可删除,由mongo自己维护。 同排序一样,1表示升序,-1表示降序。 关于options,这里的 backgroup 声明,如果当前数据量比较大,创建索引可能会比较费时,推荐设置成true。
聚合 aggregate
db.collection.aggregate(options)
eg: db.collection.aggregate([{$group : {_id : "$_id", num:{$sum : 1}}}])
eg: db.collection.aggregate({$match:{"name":"Felix"}})
这里_id设定分组条件,之后的num...等可以输出运算结果。
aggregate的参数类似与 管道 结构,可以是一个数组,然后添加一个个的过滤器来实现数据筛选。
- $project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
- $match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。
- $limit:用来限制MongoDB聚合管道返回的文档数。
- $skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
- $unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
- $group:将集合中的文档分组,可用于统计结果。
- $sort:将输入文档排序后输出。
- $geoNear:输出接近某一地理位置的有序文档。