MongoDB:按数组中的值查询文档



我有那些文档:

{"_id" : 1, "actors" : [{"matricule" : "AVB", "name":"XXX"}, {"matricule" : "AVB", "name":"YYY"}]}
{"_id" : 2, "actors" : [{"matricule" : "PMH", "name":"FFF"}, {"matricule" : "BNG", "name":"HHH"}]}

我想只得到第一个文档,因为它是相同的矩阵,但名称不同。

我使用这个查询:

{
$expr:{$eq:["$actors.0.matricule", "$actors.1.matricule"]}
}

但是没有用,我没有任何结果。你知道为什么吗?

尝试使用$arrayElemAt

db.collection.find({
$expr: {
$eq: [
{
"$arrayElemAt": [
"$actors.matricule",
0
]
},
{
"$arrayElemAt": [
"$actors.matricule",
1
]
}
]
}
})

这是Mongo游乐场供您参考。

查询
  • "actors.matricule&quot美元;是所有这些矩阵值的数组
  • 使它成为一个集合(与空数组的联合)=>没有重复的
  • 过滤器只保留那些大小为1(都有相同的值)

*可以工作,如果你有一个或多个成员在演员数组

Playmongo

aggregate(
[{"$match": 
{"$expr": 
{"$eq": [{"$size": {"$setUnion": ["$actors.matricule", []]}}, 1]}}}])

最新更新