MongoDB :如何获取其数组元素在另一个元素数组中找到的所有项目

MongoDB : How to get all items where its array elements are found in another array of elements

我将 MongoClient 与 JavaScript 一起使用,我有两个集合,productscategories

我正在尝试获取与我检索的产品相关的所有类别。

类别有一个名为“产品”的关系字段,其中包含其所有产品 ID。

另一方面,产品没有关系字段。

我需要做的是获取产品查询的所有 ID,然后以某种方式告诉 mongodb 查找所有类别,哪个关系产品数组包含主要的值产品数组.

示例:

categories :[ 
{
  name: "sweets",
  products:[
   "33hdhsksk243wjsjsksksjsj",
   "E383iwnsnsbdbdhnsm282",
   "Jj4i3jwnwnskdje9w9w9wjj"
  ]
},
{
name:"fruits",
products:[
 "42221+343211111sj",
 "43939€jsjakaljwiwjn3",
 "Jj4i3jwnwnskdje9w9w9wjj"
 ]
},

]


products:["42221+343211111sj", "43939€jsjakaljwiwjn3"]

查询搜索结果:

水果类别,因为它的一些产品在这个数组中(但如果有另一个类别的产品匹配相同的搜索,我们也应该return它)

对我有用的是使用 $in 过滤器。

例如

db.collection("categories").find({products:{$in:productIds}}).toArray();