Mongodb:我可以比较一个字段中的值是否包含在另一个字段中

use*_*300 10 mongoose mongodb node.js

假设我有一个名为 a 的集合collection_a,其中包含对名为 的集合 b 的查找collection_b。如果集合包含一个名为 的字段primary_color并且查找包含一个名为 的字段available_colors。我如何比较primary_coloravailable_colors查看列表中primary_color是否包含当前值available_colors

我尝试了以下但它在聚合匹配中不起作用,

{'primary_color': {'$in': '$collection_b.available_colors'}}.
Run Code Online (Sandbox Code Playgroud)

use*_*814 8

不可能在$matchstage 中引用另一个集合。

您必须使用$lookup或填充猫鼬。

db.collectiona.aggregate([
  {"$lookup":{
    "from":collectionb,
    "localField":"primary_color",
    "foreignField":"available_colors",
    "as":"matches"
  }},
  {"$match":{"matches.0":{"$exists":true}}}
])
Run Code Online (Sandbox Code Playgroud)

https://mongoplayground.net/p/bkQzZcrP0aJ