我有那些文档:
{"_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"美元;是所有这些矩阵值的数组
- 使它成为一个集合(与空数组的联合)=>没有重复的
- 过滤器只保留那些大小为1(都有相同的值)
*可以工作,如果你有一个或多个成员在演员数组
Playmongo
aggregate(
[{"$match":
{"$expr":
{"$eq": [{"$size": {"$setUnion": ["$actors.matricule", []]}}, 1]}}}])