MongoDB之复杂操作

原创
2017/06/03 18:27
阅读数 333

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)
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部