开发者社区> 问答> 正文

mongodb内嵌文档查找和修改问题

数据的格式是这样的:
screenshot
screenshot
现在我想的是
1 , 查询people_id 为 1 且 privilege 为 5的内嵌文档,mongodb的查询命令怎么写的啊
2,更新people_id 为 2 且权限为 id为2的内嵌文档的name字段值为 6,更新命令怎么写的啊
查询我用
db.find({"people_id" : 1,"albums":{"$elemMatch" : {"privilege" : 5}}})
来尝试匹配过,但是匹配出了:
screenshot
我并不想要id为1的那个,只想唯一匹配id为2和3那个
修改,我确实不会,
还请大家帮忙提下解决方法,非常谢谢咯!

展开
收起
蛮大人123 2016-02-14 16:51:57 2607 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    查询语句可以简化一下,如下:
    db.demo.find({"people_id" : 1, "albums.privilege": 5})
    查询结果返回的是满足匹配条件的文档,虽然可以映射返回的字段,不过还真不能只返回你说的id为2和3的文档。不过既然已经得到了满足条件的json文档,可以写程序来获取想要的内嵌子文档吧。
    更新语句如下:
    db.demo.update({people_id:2, "albums.id":2}, { $set : {"albums.$.name":6 }})
    不过只是更新数组中第一个匹配的子文档,不过albums.id看样子是唯一的,应该能满足你的需求。

    2019-07-17 18:42:46
    赞同 1 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
MongoDB多数据中心的方案选型之路 立即下载
阿里云MongoDB云服务构建 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载