Mongo查找查询仅返回一个结果

凯文:

您好我有以下数据结构:

[
  {
    "name": "a name",
    "project": [
      {
        companyName: "a name",
        contactPerson: [
          {
            work_email: "[email protected]"
          }
        ]
      },
      {
        companyName: "a name1",
        contactPerson: [
          {
            work_email: "[email protected]"
          }
        ]
      },
      {
        companyName: "a name2",
        contactPerson: [
          {
            work_email: "[email protected]"
          }
        ]
      },
      {
        companyName: "a name3",
        contactPerson: [
          {
            work_email: "[email protected]"
          }
        ]
      },
      
    ]
  }
]

通过此查询,我想找到所有带有电子邮件[email protected]的项目:

db.collection.find({
  "project.contactPerson.work_email": "[email protected]"
},
{
  "project.$": 1
})

它仅返回找到的第一个结果,然后停止。但是在我的数据中,我有两个带有该电子邮件的项目,我想找到两个项目。如果可以的话,这是一个游乐场,您可以用来进一步帮助我。在此先感谢并非常感谢:https : //mongoplayground.net/p/4Mpp7kHi98u

当然:

位置$运算符限制an的内容返回:

  1. 与数组中查询条件匹配的第一个元素。
  2. 如果没有为数组指定查询条件,则为第一个元素(从MongoDB 4.4开始)。参考

您可以执行以下操作,

[
  {
    "$unwind": "$project"
  },
  {
    $addFields: {
      "project.contactPerson": {
        $filter: {
          input: "$project.contactPerson",
          cond: {
            $eq: [
              "$$this.work_email",
              "[email protected]"
            ]
          }
        }
      }
    }
  },
  {
    $match: {
      $expr: {
        $ne: [
          "$project.contactPerson",
          []
        ]
      }
    }
  },
  {
    $group: {
      _id: "$_id",
      name: {
        $first: "$name"
      },
      project: {
        "$addToSet": "$project"
      }
    }
  }
]

工作蒙戈游乐场

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章