mongodb

Mongodb嵌套查询及修改
分类: NOSQL   898人阅读  评论(0)  收藏  举报

Mongodb各文档中对嵌套查询的介绍不知道藏在哪个地方,反正我是没找到,一个偶然的机会发现网上的一个帖子,终于知道了嵌套查询的用法。于是乎我们应用中的一个问题也随之被解决了。不说废话了,现在说下嵌套查询的使用。

假设mongodb中存在某个collections,其数据如下:

> db.xx.find()
{ "_id" : 1, "name" : { "first" : 2, "last" : 3 } }
{ "_id" : 3, "name" : { "1" : 1, "2" : 2, "3" : 3 } }
{ "_id" : 2, "name" : { "1" : 1, "2" : 2 } }

现在我们要查询_id=1的记录中name的first字段的值,执行如下:

> db.xx.find({"_id":1},{"name.first":1,"_id":0})
{ "name" : { "first" : 2 } }

OK,通过以上示例我们知道嵌套查询的关键就在于“name.first”。对嵌套属性的修改其实也类似,例如我们要将查询到这条记录中name.first的值+2,那么:

> db.xx.update({"_id":1},{$inc:{"name.first":2}})
> db.xx.find({"_id":1},{"name.first":1,"_id":0})
{ "name" : { "first" : 4 } }

ok,值已经改变。



 

mongodb随笔

分类: NOSQL   112人阅读  评论(0)  收藏  举报
1. 删除文档属性
  • var xx = db.collection.find({query})
  • xx.newkey="new value"
  • delete xx.key1
  • db.collection.update({query},xx)

操作说明:通过查询获取某个文档,给该文档设置新的key/value对,删除旧的key=》key1,然后通过update操作更新该文档

2.  删除文档

db.collection.remove({query})

3. 插入文档

db.collection.insert({})

4. 修改器$set和$unset

$unset可以删除键,$set可以创建键(该键不存在),$set可以修改键的类型(通过update)

5. 数组修改器

push,pop,pull,ne,each,addtoset

ne+push可以实现类似addtoset的功能

addtoset+echo可以实现一次插入多个值

pop可以实现从数组头或者尾删除单个元素({$pop:{key:1}从数组尾删除,{$pop:{key:-1}从数组头删除)

pull可以实现按某种查询条件删除($pull:{query})

6. 数组定位修改器

数组元素可以通过下标来访问,下标从0开始

例如:

{key:{[{x1:1},{x1:2},{x1:3}]} 则 key.0.x1=1

另可以通过定位操作符“$”来查询匹配的文档

db.xx.update({key.x1:1},{$set:{key.$.x1:10}}),若查询条件有多个匹配,则仅改变第一个匹配结果

7. getLastError()和findAnyModified()

8 . 每个客户端连接都有独立的队列,打开两个shell,就会建立2个独立的连接,在其中一个插入的文档并不一定马上会在另个一shell中展现

9.  not和mod ,exists

 mod[num1,num2]:查询条件值除以num1后值为num2

10. size和slice

size返回数组长度,slice返回片段。slice的参数可以为正/负/数组

11. limit/skip/sort

12. elemMatch

查询条件匹配单个嵌套文档,而不是多个文档的组合匹配。



http://blog.csdn.net/dy_252/article/details/7048814

http://blog.csdn.net/dy_252/article/details/7058634

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值