Mongodb 修改器
来源:互联网 发布:飞鸟淘宝客 编辑:程序博客网 时间:2024/04/30 05:47
增加、修改、删除键时,应该、一定要使用$修改器
有这样的信息:
> db.my_coll.findOne(){ "_id" : ObjectId("57d14dd9aaacc1383d8634d5"), "url" : "www.misswall.cn", "pv" : 8894}
db.my_coll.update({url:"www.misswall.cn"},{$inc:{pv:6}})pv的值变为8894+6
(2) $set修改一个键的值如果不存在则创建这个键
db.my_coll.update({url:"www.misswall.cn"},{$set:{memberCount:600}})会多出memberCount这个键
{ "_id" : ObjectId("57d14dd9aaacc1383d8634d5"), "url" : "www.misswall.cn", "pv" : 8900, "memberCount" : 600}
注意:同时使用多个$set,第一个$set有效,其他不起作用,例如:
db.my_coll.update({url:"www.misswall.cn"},{$set:{memberCount:699}},{$set:{vips:700}})之后,memberCount的值会变,但不会增加vips这个键
当然,$set也可以修改键的数据类型,例如:把memberCount的数据类型变为集合类型
db.my_coll.update({url:"www.misswall.cn"},{$set:{memberCount:{man:399,female:300}}})查看一下当前的集合结构:
> db.my_coll.findOne(){ "_id" : ObjectId("57d14dd9aaacc1383d8634d5"), "url" : "www.misswall.cn", "pv" : 8900, "memberCount" : { "man" : 399, "female" : 300 }}
$set可以修改内嵌文档的键值,但使用时必须有引号,例如"memberCount.man"
db.my_coll.update({url:"www.misswall.cn"},{$set:{"memberCount.man":400}})> db.my_coll.findOne(){ "_id" : ObjectId("57d1554daaacc1383d8634d6"), "url" : "www.misswall.cn", "memberCount" : { "man" : 400, "female" : 300 }}
$unset来删除键
db.my_coll.update({url:"www.misswall.cn"},{$unset:{pv:1}})#删除pv键#这个1不知道是什么用意,分别用0、-1、100来操作结果都是一样的;即都能删除键
查看执行后的结果:
> db.my_coll.findOne(){ "_id" : ObjectId("57d14dd9aaacc1383d8634d5"), "url" : "www.misswall.cn", "memberCount" : { "man" : 399, "female" : 300 }}
> db.mycoll.find().pretty(){"_id" : ObjectId("5864c27284fccb005dfbd870"),"count" : {"boy" : 60,"girl" : 41},"key" : "key1"}> db.mycoll.update({key:"key1"},{$inc:{"count.girl":2}});WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.mycoll.find().pretty(){"_id" : ObjectId("5864c27284fccb005dfbd870"),"count" : {"boy" : 60,"girl" : 43},"key" : "key1"}
数组修改器:
1.添加元素
$push:向已有的数组末尾加入一个元素,如果没有则创建一个新的数组;
> db.mycoll.find(){ "_id" : ObjectId("5864c27284fccb005dfbd870"), "key" : "key1" }> db.mycoll.update({"key":"key1"},{$push:{"array":1}});WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.mycoll.find(){ "_id" : ObjectId("5864c27284fccb005dfbd870"), "key" : "key1", "array" : [ 1 ] }
> db.mycoll.update({"key":"key1"},{$push:{"array":{$each:[2,3,4]}}});WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.mycoll.find(){ "_id" : ObjectId("5864c27284fccb005dfbd870"), "key" : "key1", "array" : [ 1, 2, 3, 4 ] }
$push与$slice一起使用,限制数组最大长度(用负整数表示),只保留最新的那些元素
db.mycoll.update({"key":"key1"},{$push:{"array":{$each:[4,5,6],$slice:-5}}});WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.mycoll.find(){ "_id" : ObjectId("5864c27284fccb005dfbd870"), "key" : "key1", "array" : [ 3, 4, 4, 5, 6 ] }
控制重复:可以利用$ne与$push搭配
更加常用的是:$addToSet :不会增加重复的元素
$addToSet 与$each一起使用,可以一次添加多个元素
2.删除元素:
$pop只能删除两端的元素:
{$pop:{"key":1}} 从数组末尾删除一个元素
{$pop:{"key":-1}} 从数组头部删除一个元素
$pull删除所有匹配的元素:
db.mycoll.find(){ "_id" : ObjectId("5864c27284fccb005dfbd870"), "key" : "key1", "array" : [ 3, 4, 4, 5, 6 ] }> db.mycoll.update({"key":"key1"},{$pull:{"array":4}});WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.mycoll.find(){ "_id" : ObjectId("5864c27284fccb005dfbd870"), "key" : "key1", "array" : [ 3, 5, 6 ] }
3.基于位置的数组修改器
数组的下标从0开始,可以把下标直接作为键来选择元素:
db.mycoll.find(){ "_id" : ObjectId("5864c27284fccb005dfbd870"), "key" : "key1", "array" : [ 3, 5, 6 ] }> db.mycoll.update({"key":"key1"},{$inc:{"array.0":1}});WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.mycoll.find(){ "_id" : ObjectId("5864c27284fccb005dfbd870"), "key" : "key1", "array" : [ 4, 5, 6 ] }
db.blog.update({"comments.author":"Tom"},{$set:{"comments.$.author":"Jason"}});
未完待续。。。
1 0
- MongoDB 修改器 简介
- Mongodb 修改器
- MongoDB修改器
- mongodb修改器总结
- Mongodb修改器
- Mongodb 修改器
- MongoDB修改器
- mongodb修改器:
- 【MongoDB】4.MongoDB 原子修改器的 极速修改
- mongoDB修改器之$set
- mongoDB修改器之$inc
- Mongodb修改器的使用
- 六、神奇MongoDB修改器
- mongodb的一些修改器(1)
- MongoDB数组修改器更新数据
- MongoDB数组修改器更新数据
- MongoDB 学习笔记三 修改器
- MongoDB数组修改器更新数据
- SwipeRefreshLayout基本用法
- [阶段二]Android UI选项卡组件
- LibGdx文档译读(十六) Sound接口
- 胡清华邻域粗糙集源码
- python选择排序
- Mongodb 修改器
- HDU4508-完全背包
- onCreateContextMenu创建上下文菜单
- 传统的Adapter
- iOS 九年,技术迭代迅捷下如何保持核心竞争力?
- C#之WinForm基础 点击button关闭当前窗体,用this.close()
- 基于STC串口通信和VC6.0MFC编程的电子琴设计
- 图片下面出现空白像素的6种解决办法
- JSP之include指令与include动作的区别