Javascript Mongo数组查询计数
样本采集Javascript Mongo数组查询计数,javascript,mongodb,Javascript,Mongodb,样本采集 [ { products: [ {name: 'apple'}, {name: 'mango'}, {name: 'orange'} ] }, { products: [ {name: 'banna'}, {name: 'grapes'}, {name: 'orange'} ] } ] 我想通过查询知道哪个文档至少包含2个我搜索的产品 例如 collection.find({ products: {$in: ['apple', 'mango', 'du
[
{
products: [
{name: 'apple'}, {name: 'mango'}, {name: 'orange'}
]
},
{
products: [
{name: 'banna'}, {name: 'grapes'}, {name: 'orange'}
]
}
]
我想通过查询知道哪个文档至少包含2个我搜索的产品
例如
collection.find({ products: {$in: ['apple', 'mango', 'durian', 'avocado', 'orange']} })
但这只检查它是否包含这些产品中的一种。
我想知道某个文档是否包含至少2个产品im搜索您可以添加一些代码以便操作查询结构,或者必须使用聚合管道 选项1(推荐),将聚合管道与以下内容一起使用: 选项2(imo建议较少),从fruits数组生成所有可能的对,并使用:
让水果=[‘苹果’、‘芒果’、‘榴莲’、‘鳄梨’、‘橙子’];
设queryconds=[];
for(设i=0;i
您可以添加一些代码来操作查询结构,也可以使用聚合管道
选项1(推荐),将聚合管道与以下内容一起使用:
选项2(imo建议较少),从fruits数组生成所有可能的对,并使用:
让水果=[‘苹果’、‘芒果’、‘榴莲’、‘鳄梨’、‘橙子’];
设queryconds=[];
for(设i=0;i
let fruits = ['apple', 'mango', 'durian', 'avocado', 'orange'];
collection.aggregate([
{
$match: {
"products.name": {$in: fruits}
}
},
{
$project: {
good_products_size: {
$size: {
$filter: {
input: "$products",
as: "product",
cond: {$in: ["$$product.name", fruits]}
}
}
}
}
},
{
$match: {
good_products_size: {$gt: 1}
}
}
]);
let fruits = ['apple', 'mango', 'durian', 'avocado', 'orange'];
let queryOrConds = [];
for (let i = 0; i < fruits.length - 1; i++) {
for (let j = i; j < fruits.length - 1; j++) {
queryOrConds.push({"products.name": {$all: [fruits[i], fruits[j]]}})
}
}
collection.find({ $or: queryOrConds })