首页 > 解决方案 > MongoDB:如何获取在另一个元素数组中找到其数组元素的所有项目

问题描述

我正在使用带有JavaScript的 MongoClient,我有两个集合,productscategories.

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

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

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

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

例子:

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

]


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

查询搜索结果:

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

标签: javascriptdatabasemongodbmongodb-queryproduct

解决方案


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

例如

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

推荐阅读