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']
}
}
}
}
)