MongoDB根据数组内的元素查询

数据格式如下所示:要根据provider.id进行查询, 

 "provider": [
            {
                "id": "yhx_zhengxin",
                "desc": "永鸿兴-二代人行征信指标",
                "descOld": "永鸿兴-二代人行征信指标",

}]

1、使用聚合管道(更复杂的场景)

db.collection.aggregate([
  {
    $match: {
      "provider.id": "yhx_zhengxin"
    }
  },
  {
    $addFields: {
      matchedProvider: {
        $filter: {
          input: "$provider",
          as: "p",
          cond: { $eq: ["$$p.id", "yhx_zhengxin"] }
        }
      }
    }
  }
])

2、查询并返回匹配的数组元素

db.collection.aggregate([
  {
    $unwind: "$provider"
  },
  {
    $match: {
      "provider.id": "yhx_zhengxin"
    }
  },
  {
    $group: {
      _id: "$_id",
      provider: { $push: "$provider" },
      otherFields: { $first: "$$ROOT" }
    }
  },
  {
    $replaceRoot: {
      newRoot: {
        $mergeObjects: [
          "$otherFields",
          { provider: "$provider" }
        ]
      }
    }
  }
])

总结:根据数组元素查询集合

 

posted @ 2025-06-04 17:50  郭慕荣  阅读(12)  评论(0)    收藏  举报