您的位置:首页 > 数据库 > Mongodb

mongoDb 使用技巧

2020-08-17 15:23 861 查看
  查询实战演练   需求描述 A. 查看一个人的信息,打开页面只显示三条评论 B. 点击评论的下一页按钮,新加载三条评论 C. 默认按照评论时间降序,但是也可以选择按照姓名排序     提示 A. 添加数据时注意排序 B. 查询的时候投影是有技巧的 C. 排序考虑聚合?   脚本 (1)考虑到默认顺序,所以新增评论时,使用$sort 运算符按照评论时间降序排序; db.users.updateOne({"username":"lison",}, { "$push": { "comments": { $each: [ { "author" : "james", "content" : "lison 是个好老师!", "commentTime" : ISODate("2018-01-06T04:26:18.354Z") } ], $sort: {"commentTime":-1} } } } );   注意:$sort 操作符必须和$each 配合使用 (2)由于评论已经按照时间降序排序,所以查看人员时直接加载最新的三条评论;

db.users.find({"username":"sunboy"},{"comments":{"$slice":[0,3]}}).pretty()

 

(3):点击评论的下一页按钮,新加载后三条评论(注意:仅仅加载评论的数据,人员信息

不加载) db.users.find({"username":"sunboy"},{"comments":{"$slice":[0,3]},$id:1}).pretty()  

  (4)如果有多种排序需求怎么处理?使用聚合  

db.users.aggregate({$match:{username:"sunboy"}},{$unwind:"$comments"},{$sort:{"comments.commentTime":-1}},{$project:{comments:-1}},{$skip:1},{$limit:3}).pretty();

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: