MongoDB : 按数组中的值查询文档
MongoDB : Query documents by values in array
我有那些文件:
{"_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 playground供您参考。
查询
- "$actors.matricule" 是所有这些矩阵值的数组
- 使其成为一个集合(与空数组联合)=> 没有重复
- 过滤以仅保留尺寸为 1 的那些(所有具有相同的值)
*如果演员数组中有一个或多个成员,则可以工作
aggregate(
[{"$match":
{"$expr":
{"$eq": [{"$size": {"$setUnion": ["$actors.matricule", []]}}, 1]}}}])
我有那些文件:
{"_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 playground供您参考。
查询
- "$actors.matricule" 是所有这些矩阵值的数组
- 使其成为一个集合(与空数组联合)=> 没有重复
- 过滤以仅保留尺寸为 1 的那些(所有具有相同的值)
*如果演员数组中有一个或多个成员,则可以工作
aggregate(
[{"$match":
{"$expr":
{"$eq": [{"$size": {"$setUnion": ["$actors.matricule", []]}}, 1]}}}])