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" } ] } } } ])
总结:根据数组元素查询集合
郭慕荣博客园

浙公网安备 33010602011771号