MongoDB之复杂操作

mongodb的shell脚本是不支持批量插入的,但是我们可以通过js脚本,写个for循环进行多条记录的插入,但是一般不常用。

mongodb想要插入一条数据,除了使用insert之外,还可以使用save,两者的区别就是,insert的时候,如果指定的id已经存在,那么就会抛出异常,save则会更新数据:db.person.save({"_id":"1",name:"zhaoliu"})

删除列表中所有数据: db.[documentName].remove({}) (集合的本身和索引不会别删除)

根据条件删除 db.person.remove({name:"zhangsan"})

小技巧 :如果你想删除一个数据量十分庞大的集合,直接删除该集合并且重新建立索引,比直接用remove的效率和高很多

insertOrUpdate操作:db.person.update({name:"zhangsan"},{$set:{age:18}},true) 其中第一个参数就是修改条件,第二参数就是修改的字段,第三个参数就表示如果没有满足条件的数据,那么就执行insert操作。

批量更新操作:db.person.update({name:"lisi"},{$set:{sex:"m"}},false,true) 第四个参数为true就表示更新所有满足条件的数据,因为mongodb默认情况下只会update第一条符合条件的数据。

使用修改器来完成局部更新操作: 输入图片说明输入图片说明

$addToSet与$each结合完成批量数组更新 :db.person.update({_id:1000},{$addToSet:{books:{$each:[“JS”,”DB”]}}}) ($each会循环后面的数组把每一个数值进行$addToSet操作)

runCommand函数和findAndModify函数

runCommand可以执行mongoDB中的特殊函数

findAndModify就是特殊函数之一他的用于是返回update或remove后的文档

runCommand({“findAndModify”:”processes”,
       	         query:{查询器},
		 sort{排序},
		 new:true
		update:{更新器},
		remove:true
       }).value
  ps = db.runCommand({
               "findAndModify":"persons",
               "query":{"name":"text"},
		      "update":{"$set":{"email":"1221"}},
		      "new":true 
}).value
do_something(ps)

转载于:https://my.oschina.net/u/3441184/blog/913833

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoDB是一个流行的NoSQL数据库,提供了许多高级操作来处理和管理数据。以下是一些MongoDB的高级操作: 1. 聚合操作MongoDB的聚合操作可以对集合中的文档进行复杂的数据处理和分析。它包括管道操作符,可以进行排序、筛选、分组、映射、限制和计算等操作,以生成所需的结果。 2. 索引优化:索引是MongoDB中优化查询性能的重要工具。通过为经常查询的字段创建索引,可以加快查询速度。MongoDB支持多种类型的索引,如单字段索引、组合索引、文本索引和地理空间索引等。 3. 事务处理:MongoDB从版本4.0开始支持事务处理。事务是一组关联操作的集合,要么全部成功执行,要么全部失败回滚。事务处理可确保在并发环境下数据的一致性和完整性。 4. 数据备份和恢复:MongoDB提供了多种备份和恢复数据的方式。可以使用mongodump和mongorestore命令行工具进行全量备份和恢复,也可以使用Oplog来进行增量备份和恢复。 5. 数据迁移:当需要将数据从一个MongoDB实例迁移到另一个实例时,可以使用mongodump和mongorestore命令行工具来执行全量数据迁移。同时,还可以使用MongoDB的复制集和分片集群功能来实现数据的高可用和水平扩展。 6. 数据加密:MongoDB提供了字段级别的数据加密功能。可以使用客户端端到端加密的方式来保护敏感数据,确保数据在存储和传输过程中的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值