MongoDB中对数组使用$elemMatch的方法

4

我有一个类似这样的文档:

{
  "values": 
    [
      ["a","231"],
      ["b","232"],
      ["c","233"],
      ["a","235"]  
    ]
}

如何在值属性上使用$elemMatch。希望筛选出值中第一个元素为"a"的元素。
类似以下示例代码:
db.test.find({"values" : {$elemMatch: { "matchedElemet"[0]: "a"}}},{"values.$":1})

你目前做了什么? - Ashish Patel
1个回答

4
你可以使用以下方式:
```html

你可以像这样使用:

```
db.test.find(
    {
        'values': {
            $elemMatch: {
                $elemMatch: {
                    $in: ['a']
                }
            }
        }
    },
    {
        "values.$": 1
    }
)

或者

db.test.find(
    {},
    {
        'values': {
            $elemMatch: {
                $elemMatch: {
                    $in: ['a']
                }
            }
        }
    }
)

我希望我理解您的要求,并且这能有所帮助。


数组的第一个元素是关键点,如果a在数组的第二个位置,我不想匹配它。 - SajjadRahnama
@SajjadRahnama,你能在应用层做一件事吗?首先使用splice仅过滤第一个值:db.test.find({},{'values':{$slice:1}}); 然后再使用上述查询。这样可以解决你的问题,直到你找到单个查询。 - Pankaj kumar Panigrahi
是的,在应用层处理这个问题是更好的解决方案。 - SajjadRahnama

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接