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 }
>

 

posted @ 2022-01-10 16:04  linuxTang  阅读(451)  评论(0)    收藏  举报