频道栏目
首页 > 数据库 > 其他综合 > 正文
mongodb的简单操作
2015-08-25 09:52:39         来源:刘锐群的笔记  
收藏   我要投稿

使用mongodb也有一段时间了,有过其他数据库使用经验的人会发现mongodb上手很简单。个人觉得需要注意的,是关于mongodb的一些修改器的使用。

为了操作演示,先来建立一个数据表

 

> db.contact.insert({"phone":[{"number":"12345678912","place":"chengdu"},{"number":"12345678913","place":"chengdu"}],"createtime":1440075592})

查看数据表

 

 

> db.contact.find()
{ "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456
78912", "place" : "chengdu" }, { "number" : "12345678913", "place" : "chengdu" }
 ], "createtime" : 1440075592 }

此时开始我们的修改器操作:

 

1、$inc

修改器 $inc 可以对数据表中摸个为数字型的键进行增减的操作。

 

> db.contact.update({"createtime":1440075592},{"$inc":{"createtime":1}})
查看数据表

 

 

> db.contact.find()
{ "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456
78912", "place" : "chengdu" }, { "number" : "12345678913", "place" : "chengdu" }
 ], "createtime" : 1440075593}
可见,createtime 键值增加 1.当然,要减去的话只需要把1换为负数即可。

 

2、$set

$set 用来指定一个键并更新键值,如果指定的键不存在,则会创建该键。

 

> db.contact.update({"createtime":1440075593},{"$set":{"createtime":1}})
查看数据表

 

 

> db.contact.find()
{ "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456
78912", "place" : "chengdu" }, { "number" : "12345678913", "place" : "chengdu" }
 ], "createtime" : 1}
可见,createtime 键值设置为 1。

 

再指定一个不存在的键值

 

> db.contact.update({"createtime":1},{"$set":{"updatetime":1}})
查看数据表

 

 

> db.contact.find()
{ "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456
78912", "place" : "chengdu" }, { "number" : "12345678913", "place" : "chengdu" }
 ], "createtime" : 1,  "updatetime" : 1 }
增加了 “updatetime”键,并设置键值为1.

 

3、$unset

$unset 用来删除指定的键

 

> db.contact.update({"createtime":1},{"$unset":{"updatetime":1}})
查看数据表

 

 

> db.contact.find()
{ "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456
78912", "place" : "chengdu" }, { "number" : "12345678913", "place" : "chengdu" }
 ], "createtime" : 1 }
删除了键 “updatetime”,此处对目标键使用任何具体的键值都可以删除该目标键。

 

4、$push

$push 向数据表中的某个数组类型的键添加一个数组元素,不过滤重复的数据。若键不存在,则创建数组类型的键。

 

> db.contact.update({"createtime":1},{"$push":{"phone":{"number":"12345678914","place":"chengdu"}}})
查看数据表

 

 

> db.contact.find()
{ "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456
78912", "place" : "chengdu" }, { "number" : "12345678913", "place" : "chengdu" }
, { "number" : "12345678914", "place" : "chengdu" } ], "createtime" : 1, }
“phone”键中添加了一个数据项。

 

再指定一个不存在的类型为数组的键

 

> db.contact.update({"createtime":1},{"$push":{"email":"123456789@test.com"}})
看看数据表

 

 

> db.contact.find()
{ "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456
78912", "place" : "chengdu" }, { "number" : "12345678913", "place" : "chengdu" }
, { "number" : "12345678914", "place" : "chengdu" } ], "createtime" : 1, "email"
 : [ "123456789@test.com" ] }
添加了“email”键,并设置了指定的键值。

 

5、$addToSet

$addToSet 类似 $push ,都是给数组类型键值添加一个元素时,但是 $addToSet 能够避免在数组中产生重复数据。

6、$pull

$pull 对数据表中的某个数组类型的键删除一个数组元素

 

> db.contact.update({"createtime":1},{"$pull":{"phone":{"number":"12345678914"}}})
查看数据表

 

 

> db.contact.find()
{ "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456
78912", "place" : "chengdu" }, { "number" : "12345678913", "place" : "chengdu" }
 ], "createtime" : 1, "email" : [ "123456789@test.com" ] }
可见,删除了指定的数据项

 

7、$pop

$pop 跟 $pull 都是数组修改器,但是 $pop 只是从数组的头或者尾删除数组中的元素

先插入几个数据

 

> db.contact.update({"createtime":1},{"$push":{"phone":{"number":"12345678914","
place":"chengdu"}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.contact.update({"createtime":1},{"$push":{"phone":{"number":"12345678915","
place":"chengdu"}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.contact.update({"createtime":1},{"$push":{"phone":{"number":"12345678916","
place":"chengdu"}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.contact.update({"createtime":1},{"$push":{"phone":{"number":"12345678917","
place":"chengdu"}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
此时

 

 

> db.contact.find()
{ "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456
78912", "place" : "chengdu" }, { "number" : "12345678913", "place" : "chengdu" }
, { "number" : "12345678914", "place" : "chengdu" }, { "number" : "12345678915",
 "place" : "chengdu" }, { "number" : "12345678916", "place" : "chengdu" }, { "nu
mber" : "12345678917", "place" : "chengdu" } ], "createtime" : 1, "email" : [ "1
23456789@test.com" ] }
执行

 

 

> db.contact.update({"createtime":1},{"$pop":{"phone":-1}})
得到

 

 

> db.contact.find()
{ "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456
78913", "place" : "chengdu" }, { "number" : "12345678914", "place" : "chengdu" }
, { "number" : "12345678915", "place" : "chengdu" }, { "number" : "12345678916",
 "place" : "chengdu" }, { "number" : "12345678917", "place" : "chengdu" } ], "cr
eatetime" : 1, "email" : [ "123456789@test.com" ] }
操作结果,从头部删除了数据项

 

再次执行

 

> db.contact.update({"createtime":1},{"$pop":{"phone":1}})
得到

 

 

> db.contact.find()
{ "_id" : ObjectId("55dac281081c67f0a7549fee"), "phone" : [ { "number" : "123456
78913", "place" : "chengdu" }, { "number" : "12345678914", "place" : "chengdu" }
, { "number" : "12345678915", "place" : "chengdu" }, { "number" : "12345678916",
 "place" : "chengdu" } ], "createtime" : 1, "email" : [ "123456789@test.com" ] }
操作结果,从尾部删除了数据项
其实,“phone”对应键值为正数则从尾部删除,为负数则从头部删除

 

点击复制链接 与好友分享!回本站首页
相关TAG标签
上一篇:leveldb学习:skiplist
下一篇:每天进步一点点————数据库对象优化
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站