在 mongodb 中执行重复过滤
Posted
技术标签:
【中文标题】在 mongodb 中执行重复过滤【英文标题】:Performing Repeated filtering in mongodb 【发布时间】:2020-12-03 10:06:51 【问题描述】:我想获取在 bmw 工作的人的姓名,并使用这些姓名作为过滤器来查找并返回包含字段“car”的文档。所以最终结果必须是本例中给出的最后两个文档。
[
"_id": "235", "name": "indu", "dob": "31/4/15", "company": "bmw",
"_id": "236", "name": "prith", "dob": "01/4/98", "company": "bmw",
"_id": "237", "name": "rames", "dob": "07/4/00", "company": "renault",
"_id": "238", "name": "indu", "salary": "10,000", "car": "yes", "married": "yes",
"_id": "239", "name": "prith", "salary": "80,000", "car": "yes", "children": "no"
]
感谢您的帮助,在此先感谢
【问题讨论】:
【参考方案1】:你想使用$exists
names = db.collection.distinct"name", "company": "bmw")
db.collection.find("car": "$exists": true, "name": "$in": names)
你也可以在 1 个聚合调用中完成,但我不推荐它,因为它的效率较低。
db.collection.aggregate([
"$match":
"company": "bmw"
,
$lookup:
from: "this_collection",
localField: "name",
foreignField: "name",
as: "roots"
,
"$unwind": "$roots"
,
"$replaceRoot":
"newRoot": "$roots"
,
"$match":
"car": "$exists": true
])
【讨论】:
不错的解决方案..解决了我的问题..谢谢汤姆以上是关于在 mongodb 中执行重复过滤的主要内容,如果未能解决你的问题,请参考以下文章
Mongodb聚合$lookup $project和$match不起作用[重复]