Mongodb:我可以比较一个字段中的值是否包含在另一个字段中
假设我有一个名为 a 的集合collection_a,其中包含对名为 的集合 b 的查找collection_b。如果集合包含一个名为 的字段primary_color并且查找包含一个名为 的字段available_colors。我如何比较primary_color以available_colors查看列表中primary_color是否包含当前值available_colors?
我尝试了以下但它在聚合匹配中不起作用,
{'primary_color': {'$in': '$collection_b.available_colors'}}.
回答
不可能在$matchstage 中引用另一个集合。
您必须使用$lookup或填充猫鼬。
db.collectiona.aggregate([
{"$lookup":{
"from":collectionb,
"localField":"primary_color",
"foreignField":"available_colors",
"as":"matches"
}},
{"$match":{"matches.0":{"$exists":true}}}
])
https://mongoplayground.net/p/bkQzZcrP0aJ