mongoDb 客户端及使用技巧

本文分享了将SQL语句转换为MongoDB查询的方法,并通过具体案例演示了如何使用robo3T和NoSQLBooster工具进行数据操作。详细讲解了在MongoDB中实现分页查询、评论按时间或姓名排序的技巧,以及聚合查询的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://robomongo.org/
robo 3T客户端

https://robomongo.org/


NoSQLBooster for MongoDB
分享个工具,可以把sql语句转成MongoDB查询语句

查询实战演练
需求描述
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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值