Arrays 阵列上的MongoDB$elemMatch

Arrays 阵列上的MongoDB$elemMatch,arrays,mongodb,mongodb-query,Arrays,Mongodb,Mongodb Query,我有这样一份文件: { "values": [ ["a","231"], ["b","232"], ["c","233"], ["a","235"] ] } 如何在value属性上使用$elemMatch。 要将元素投影到第一个元素为“a”的值中 大概是这样的: db.test.find({"values" : {$elemMatch: { "matchedElemet"[0]: "a"}}},{"values.$":1

我有这样一份文件:

{
  "values": 
    [
      ["a","231"],
      ["b","232"],
      ["c","233"],
      ["a","235"]  
    ]
}
如何在value属性上使用
$elemMatch
。 要将元素投影到第一个元素为“a”的值中

大概是这样的:

db.test.find({"values" : {$elemMatch: { "matchedElemet"[0]: "a"}}},{"values.$":1})

您可以使用以下内容:

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


我希望我正确地理解了您的要求,这对我很有帮助。

到目前为止您做了什么?如果a在数组中处于第二位,那么作为数组的第一个元素就是我不想匹配的点that@SajjadRahnama你能在应用层做一件事吗?首先只使用splice:db.test.find({},{'values':{$slice:1}})过滤第一个值;然后使用上面的查询。这将解决您的问题,直到您找到一个单一的查询,它是更好的解决方案,这样做在应用层
db.test.find(
    {},
    {
        'values': {
            $elemMatch: {
                $elemMatch: {
                    $in: ['a']
                }
            }
        }
    }
)