2022MongoDB5-分页查询和聚合查询求和
一,分页和排序:
1正序排列:
字符串按照字母顺序排列,数字按照大小顺序排列,如果是中文,按照uncode编码值进行排序,
db.users.find().sort({"name":1});
2倒序排列
db.users.find().sort({"name":-1});
3在所有的结果中过滤出name和age字段,然后用age的字段值进行排序:
db.users.find({},{"name":1,"age":1}).sort({"age":1});
4先按年龄排序,如果年龄相同再按名字进行排序:
db.users.find({},{"name":1,"age":1}).sort({"age":1, "name":1});
5跳过4行数据,查询2行数据:
db.users.find().sort({"name":1}).skip(4).limit(2);
二,聚合查询:
MongoDB集合查询使用的函数是aggregate(),这个函数的参数是一个数组,如果只有一个参数可以不用写中括号但不推荐这样写,数组[]内参数的顺序直接影响到结果
#先插入5条数据 > db.order.find(); > > > db.order.insert([ ... {"title":"o1","payment":100}, ... {"title":"o2","payment":120}, ... {"title":"o3","payment":119}, ... {"title":"o4","payment":110}, ... {"title":"o5","payment":999} ... ]); BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 5, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] }) > > db.order.find(); { "_id" : ObjectId("61dbe29ca3c2932347187cd8"), "title" : "o1", "payment" : 100 } { "_id" : ObjectId("61dbe29ca3c2932347187cd9"), "title" : "o2", "payment" : 120 } { "_id" : ObjectId("61dbe29ca3c2932347187cda"), "title" : "o3", "payment" : 119 } { "_id" : ObjectId("61dbe29ca3c2932347187cdb"), "title" : "o4", "payment" : 110 } { "_id" : ObjectId("61dbe29ca3c2932347187cdc"), "title" : "o5", "payment" : 999 } > #不对_id进行分组统计所有行,进行加1操作 > db.order.aggregate([{"$group":{"_id":null, "count":{"$sum":1}}}]); { "_id" : null, "count" : 5 } #对每行数据的金额进行累加 > db.order.aggregate([{"$group":{"_id":null, "count":{"$sum":"$payment"}}}]); { "_id" : null, "count" : 1448 } > #对每组钟的title进行分组再求每组payment值的累加和 > db.order.aggregate([{"$group":{"_id":"$title", "count":{"$sum":"$payment"}}}]); { "_id" : "o1", "count" : 100 } { "_id" : "o3", "count" : 119 } { "_id" : "o5", "count" : 999 } { "_id" : "o2", "count" : 120 } { "_id" : "o4", "count" : 110 } >

浙公网安备 33010602011771号