mongodb修改器总结

1.$inc,增加或删除,在键不存在时,也能创建。只能用于整数,长整数,双精度浮点数。不能是字符串,数组,

或其他非数字。

    db.dbname.update({"url":"www.example.com"},{"$inc":{"pageviews":1}})

             访问页面的次数+1

2.$set,用来指定一个键的值,如果这个键不存在,则创建他。

db.dbname.update({"_id":ObjectId("xxxxxxxxx")},{"$set":{"favorite book":"war and peace"}})

如果用户喜欢的是另外一本书

db.dbname.update({"name":"joe"},{"$set":{"favorite book":"other"}})

还可以修改键的类型

db.dbname.update({"name":"joe"},{"$set":{"favorite book":["book1","book2","book3"]}})

改为了数组类型。

还可以用$unset将键完全删除

db.dbname.update({"name":"joe"},{"$unset":{"favorite book":1}})

删除了favaorite键

修改内嵌文档

db.dbname.update({"name":"joe"},{"$set":{"author.name:"joe schmoe"}})

3.$push数组修改器。如果指定的键已存在,会向已有的数组末尾插入一个元素。要是不存在,就会创建一个新

的数组。

db.dbname.update({"title":"a blog post"},{"$push":{"comments":{"name":"joe","email":"com.mail"}}})

如果一个值不在数组里,就把他加进去。可以用“$ne”来实现。

db.dbname.update({"authors cited":{"$ne":"Richie"}},{"$push":{"author cited:"Richie"}})

也可以用$addToSet完成一样的工作。

$addToSet能避免重复

db.dbname.update({"_id":ObjectId("XXXXXXX")},{"$addToSet":{"emails":"joe@hotmail.com"}})

还能跟$each组合添加多个不同的值

db.dbname.update({"_id":ObjectId("XXXXXXX")},

{"$addToSet":{"emails":{"$each":["joe1@hotmail.com","joe2@hotmail.com","joe3@hotmail.com"]}}})

4.$pop从数组中删除元素。

{$pop:{key:1}}从数组末尾删除一个

{$pop:{key:-1}}从数组开头删除一个

$pull能够根据具体条件删除,可以将所以匹配的都删掉

db.lists.update({},{"todo":"laundry"})

5.数组的定位修改

db.blog.update({"post":post_id},{"$inc":{"comments.0.votes":1}})将第一个的投票数量+1

还可以用$定位

db.blog.update({"name":jone},{"$set":{"comments.$.votes":1}})将姓名为jone的的投票数量+1

6.upsert是一种特殊的更新。如果没有文档满足条件,就以条件和跟新文档为基础,创建一个新的 文档

如果有匹配的文档,就正常跟新。

db.math.update({"count":25},{"$inc":{"count":3}},true)

7.save文档不存在时插入,存在时更新。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值