javascript - MongoDB:如何获取在另一个元素数组中找到其数组元素的所有项目
问题描述
我正在使用带有JavaScript的 MongoClient,我有两个集合,products
和categories
.
我正在尝试获取与我检索到的产品相关的所有类别。
类别有一个名为“产品”的关系字段,其中包含所有产品 ID。
另一方面,产品没有关系字段。
我需要做的是获取产品查询的所有 id,然后以某种方式告诉 mongodb 查找所有类别,其中关系产品数组包含来自主产品数组的值。
例子:
categories :[
{
name: "sweets",
products:[
"33hdhsksk243wjsjsksksjsj",
"E383iwnsnsbdbdhnsm282",
"Jj4i3jwnwnskdje9w9w9wjj"
]
},
{
name:"fruits",
products:[
"42221+343211111sj",
"43939€jsjakaljwiwjn3",
"Jj4i3jwnwnskdje9w9w9wjj"
]
},
]
products:["42221+343211111sj", "43939€jsjakaljwiwjn3"]
查询搜索结果:
水果类,因为它的一些产品在这个数组中(但是如果有另一个类别的产品匹配相同的搜索,我们也应该返回它)
解决方案
对我有用的是使用 $in 过滤器。
例如
db.collection("categories").find({products:{$in:productIds}}).toArray();
推荐阅读
- xslt - 需要汇总数据可以为空的节点
- r - Bash 菜单脚本 - 无法执行命令
- java - 无法解析符号“CollectNewspaperKarel”
- pci-compliance - 我可以在没有 PCI 合规性的情况下存储用户银行详细信息吗?
- jquery - 如何使用 jQuery 3.3.1 设置选择列表的选项
- c# - 条件表达式中的数据类型不匹配 ms-access c#
- hive - Hive INSERT OVERWRITE 不适用于启用 ACID 属性
- python - 连接到 mysql wamp 和 django 的问题?
- sql-server - 使用触发器仅插入或更新特定记录
- javascript - 浏览器中的 Javascript 文件是否需要 .js 扩展名?