小编ksp*_*ong的帖子

如何仅在mongo shell查询中投影嵌套数组的匹配字段

我对mongodb很新,我希望有一个简单的问题:

我有一个嵌套模式,其中我有一个数组的字段,其中该数组的每个项目本身都有一个数组字段.

例如:

> db.mytest.insert({
    name: 'a',
    top: [
      {x:1, y:2, nest: [{p:1, q:2}, {p:2, q:3}]},
      {x:2, y:3, nest: [{p:4, q:5}, {p:6, q:7}]}
    ]
  })
Run Code Online (Sandbox Code Playgroud)

我可以查询p的某些值就好了,甚至可以将我的结果限制为第一个匹配元素top:

> db.mytest.findOne({'top.nest': {$elemMatch: {p:6}}}, {'top.nest.$': 1})
{"_id":ObjectId(...), top: [{x:2, y: 3, nest: [{p:4, q:5}, {p:6, q:7}]}]}
Run Code Online (Sandbox Code Playgroud)

这让我想起我的问题:{'top.nest.$': 1}和{'top.$': 1}我的投影文件都返回相同的结果.如何将搜索结果限制为仅包含第一个匹配元素nest?

我是否需要第二遍传递这种查询方式的结果?

arrays mongodb

7
推荐指数
1
解决办法
4149
查看次数

标签 统计

arrays ×1

mongodb ×1