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 的那些(所有具有相同的值)

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

Playmongo

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