设为首页 加入收藏

TOP

MongoDB数据修改总结(二)
2014-11-24 07:53:19 来源: 作者: 【 】 浏览:9
Tags:MongoDB 数据 修改 总结
lain]
> db.mytest.update({_id:15},{$set:{array:["aaa","bbb"]}})
> db.mytest.find({_id:15})
{ "_id" : 15, "array" : [ "aaa", "bbb" ], "count" : 15, "name" : "ok123" }
使用push追加数据:
[plain]
> db.mytest.update({_id:15},{$push:{array:"ccc"}})
> db.mytest.find({_id:15})
{ "_id" : 15, "array" : [ "aaa", "bbb", "ccc" ], "count" : 15, "name" : "ok123" }
push一次只能追加一个值,如果需要追加多个值,则需要使用$pushAll:
[plain]
> db.mytest.update({_id:15},{$pushAll:{array:["ddd","eee","fff"]}})
> db.mytest.find({_id:15})
{ "_id" : 15, "array" : [ "aaa", "bbb", "ccc", "ddd", "eee", "fff" ], "count" : 15, "name" : "ok123" }
8). $addToSet
用法:{$addToSet:{field:value}}
增加一个值到数组内,而且只有当这个值不在数组内才增加:
[plain]
> db.mytest.update({_id:15},{$addToSet:{array:"123"}})
> db.mytest.find({_id:15})
{ "_id" : 15, "array" : [ "aaa", "bbb", "123" ], "array2" : [ "mmm", "nnn"], "count" : 15, "name" : "ok123" }
> db.mytest.update({_id:15},{$addToSet:{array:"aaa"}})
> db.mytest.find({_id:15})
{ "_id" : 15, "array" : [ "aaa", "bbb", "123" ], "array2" : [ "mmm", "nnn"], "count" : 15, "name" : "ok123" }
9). $pop
删除数组内的一个值,删除最后一个值:{$pop:{field:1}} ,删除第一个值:{$pop:{field:-1}}
[plain]
> db.mytest.find({_id:15})
{ "_id" : 15, "array" : [ "aaa", "bbb", "123" ], "array2" : [ "mmm", "nnn"], "count" : 15, "name" : "ok123" }
> db.mytest.update({_id:15},{$pop:{array:1}})
> db.mytest.find({_id:15})
{ "_id" : 15, "array" : [ "aaa", "bbb" ], "array2" : [ "mmm", "nnn" ], "count" : 15, "name" : "ok123" }
10). $pull
用法:$pull:{field:value} 从数组中删除一个等于value的值:
[plain]
> db.mytest.find({_id:15})
{ "_id" : 15, "array" : [ "aaa", "bbb" ], "array2" : [ "mmm", "nnn" ], "coun
t" : 15, "name" : "ok123" }
> db.mytest.update({_id:15},{$pull:{array:"aaa"}})
> db.mytest.find({_id:15})
{ "_id" : 15, "array" : [ "bbb" ], "array2" : [ "mmm", "nnn" ], "count" : 15,
"name" : "ok123" }
11). $pullAll
用法同$pull,可以一次删除数组内的多个值:
[plain]
> db.mytest.find({_id:15})
{ "_id" : 15, "array" : [ "bbb" ], "array2" : [ "mmm", "nnn" ], "count" : 15,"name" : "ok123" }
> db.mytest.update({_id:15},{$pullAll:{array2:["mmm","nnn"]}})
> db.mytest.find({_id:15})
{ "_id" : 15, "array" : [ "bbb" ], "array2" : [ ], "count" : 15, "name" : "ok123" }
12). $
可以理解为数组定位器,看一个官方文档的例子:
[plain]
> t.find()
{ "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "title" : "ABC", "comments" : [ { "by" : "joe", "votes" : 3 }, { "by" : "jane", "votes" : 7 } ] }
> t.update( {'comments.by':'joe'}, {$inc:{'comments.$.votes':1}})
> t.find()
{ "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "title" : "ABC", "comments" : [ { "by" : "joe", "votes" : 4 }, { "by" : "jane", "votes" : 7 } ] }
需要注意的是,$只会找到第一条数组项,后面的就不管了:
[plain]
> db.mytest.find({_id:16})
{ "_id" : 16, "x" : [ 1, 2, 3, 1 ] }
> db.mytest.update({x:1},{$inc:{"x.$":1}})
> db.mytest.find({_id:16})
{ "_id" : 16, "x" : [ 2, 2, 3, 1 ] }
还有一点需要注意,当$配合$unset使用的时候,会留下一个null的数组项,这个问题可以使用{$pull:{x:null}}解决:
[plain]
> db.mytest.find({_id:16})
{ "_id" : 16, "x" : [ 2, 2, 3, 1 ] }
> db.mytest.update({x:3},{$unset:{"x.$":1}})
> db.mytest.find({_id:16})
{ "_id" : 16, "x" : [ 2, 2, null, 1 ] }
> db.mytest.update({_id:16},{$pull:{x:null}})
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇mongdb文件型数据库开发实例 下一篇数据库核心の增删改查

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Python爬虫教程(从 (2025-12-26 16:49:14)
·【全269集】B站最详 (2025-12-26 16:49:11)
·Python爬虫详解:原 (2025-12-26 16:49:09)
·Spring Boot Java: (2025-12-26 16:20:19)
·Spring BootでHello (2025-12-26 16:20:15)