mongo日常命令集锦

查询某个字段是否存在

db.student.findOne({name:{$exists:true}})

db.student.findOne({'department.name':{$exists:true}})

db.student.findOne({'department.name':{$exists:false}})

-------------------------------------------------------------------------------

判断map对象是否为空,注意不能通过$gt,$lt来判断size大小,可以利用索引来判断

db.student.find({class: {$not: {$size: 0}}}).limit(2)

db.student..find({'class.0': {$exists: 1}})

----------------------------------------------------------------------------------

判断一个数组的size

db.student..find({'class': {$size: 3}})

db.student.find({ $where: "this.class.length < 3" })

---------------------------------------------------------------------------------

格式化输出

select top 1 *from student;

db.student.findOne()

 

select top 1 *from student where age>15;

db.student.findOne({age:{$gt:15}})

 

select class,department from student where name='shell' and gender=true;

db.student.findOne({name:shell,gender:true},{class:1,department:1})

---------------------------------------------------------------------------------

游标跳转查询和限定返回的个数

db.department.find().skip(10)

 

select top 10 *from department;

db.department.find().limit(10)

---------------------------------------------------------------------------------

值返回指定字段,第一个map写filter条件,第二个map写返回的字段,默认会返回_id,如果不需要可以设置_id:0

db.student.find({},{name:1,id:1}

db.student.find({},{name:1,id:1,_id:0}

--------------------------------------------------------------------------------------

查询总数

db.student.find().count()

db.student.find({age:{$lt:20}}).count()

-----------------------------------------------------------------------------------

更新和删除某个字段:删除第一个class和修改更新时间为当前时间

更新或添加字段使用$set

删除字段使用unset

db.student.update({id:10005},{$unset:{'class.0':1},$set:{updated:NumberLong(new Date().valueOf()/1000)}})

------------------------------------------------------------------------------------

kill锁

先用这个命令查看锁,找到你要kill的pid

db.currentOp()

将上一步查找到的pid写入括号内,执行以下命令就干掉了

db.killOp(pid)

-------------------------------------------------------------------------------------

重命名字段

db.test.update({}, {$rename : {"a" : "b"}}, false, true)

-------------------------------------------------------------------------------------

在数组中插入元素

db.users.update({"name":"zhang"},{"$addToSet":{"age":18}})

-------------------------------------------------------------------------------------

删除整条记录

delete from test where key='test1';

db.test.remove({'key':'test1'})

 

转载于:https://www.cnblogs.com/smileyes/p/7286918.html

### MongoDB 中 `mongo` 和 `mongos` 命令的功能差异及使用场景 #### 功能差异 `mongo` 是早期版本中用于与 MongoDB 实例交互的命令行工具,主要用于单机模式下的数据库管理和操作。然而,在较新的 MongoDB 版本中,该工具已被替换为 `mongosh`[^5]。 相比之下,`mongos` 并不是一个普通的客户端工具,而是分片集群中的一个重要组件。它充当路由的角色,负责协调客户端请求并将其分配到合适的分片上[^3]。 #### 使用场景 - **`mongo` 或 `mongosh`:** 主要适用于单节点或副本集环境下的数据库管理任务。例如,执行查询、创建索引以及运行脚本等功能都可以通过此工具完成[^4]。 - **`mongos`:** 在分片环境中必不可少。当应用程序需要访问多个分片上的数据时,所有的读写请求都应经过 `mongos` 路由处理。这意味着开发者通常不会直接调用 `mongos` 来进行日常的数据操作;相反,应用层会向 `mongos` 发送指令,而后者再决定这些指令应该发送给哪个具体的 shard 执行[^2]。 #### 示例代码展示如何连接至不同类型的MongoDB实例 对于本地或者远程单一服务器上的MongoDB实例可以通过如下方式建立连接: ```javascript // 使用 mongosh 连接本地默认端口的 MongoDB 实例 mongosh // 如果是非标准端口或是特定主机地址则需指定参数 mongosh --port 27018 --host example.com myDatabaseName ``` 而在涉及分片架构的情况下, 应先启动好相应的 mongos 进程之后才能正常工作: ```bash # 启动一个监听在某个端口上的 mongos 进程 (假设这里为 27017) mongos --configdb configReplSet/<config_server_host>:<port> --bind_ip localhost,<other_ips> ``` 随后就可以像平常一样利用任何支持 SRV 记录解析的应用程序去连入这个作为网关存在的 mongos 程序了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值