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.youkuaiyun.com/dy_252/article/details/7048814

http://blog.youkuaiyun.com/dy_252/article/details/7058634

基于Spring Boot搭建的一个多功能在线学习系统的实现细节。系统分为管理员用户两个主要模块。管理员负责视频、文件文章资料的管理以及系统运营维护;用户则可以进行视频播放、资料下载、参与学习论坛并享受个性化学习服务。文中重点探讨了文件下载的安全性性能优化(如使用Resource对象避免内存溢出),积分排行榜的高效实现(采用Redis Sorted Set结构),敏感词过滤机制(利用DFA算法构建内存过滤树)以及视频播放的浏览器兼容性解决方案(通过FFmpeg调整MOOV原子位置)。此外,还提到了权限管理方面自定义动态加载器的应用,提高了系统的灵活性易用性。 适合人群:对Spring Boot有一定了解,希望深入理解其实际应用的技术人员,尤其是从事在线教育平台开发的相关从业者。 使用场景及目标:适用于需要快速搭建稳定高效的在线学习平台的企业或团队。目标在于提供一套完整的解决方案,涵盖从资源管理到用户体验优化等多个方面,帮助开发者更好地理解掌握Spring Boot框架的实际运用技巧。 其他说明:文中不仅提供了具体的代码示例技术思路,还分享了许多实践经验教训,对于提高项目质量有着重要的指导意义。同时强调了安全性、性能优化等方面的重要性,确保系统能够应对大规模用户的并发访问需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值