我正在寻找一种搜索集合的方法,以过滤以下数据,从而找到包含类(101,102,103)的组;而101和102的数量不足100。提前感谢您。
[
{
"group": "1",
"classes": [
{
"id": "101",
"quantity": "100",
"type": "AAA"
},
{
"id": "102",
"quantity": "24",
"type": "BBB"
},
{
"id": "103",
"quantity": "10",
"type": "BBB"
},
{
"id": "104",
"quantity": "16",
"type": "AAA"
},
{
"id": "105",
"quantity": "25",
"type": "AAA"
},
{
"id": "106",
"quantity": "20",
"type": "BBB"
},
{
"id": "107",
"quantity": "24",
"type": "AAA"
}
]
},
{
"group": "2",
"classes": [
{
"id": "101",
"quantity": "20",
"type": "AAA"
},
{
"id": "102",
"quantity": "30",
"type": "BBB"
},
{
"id": "113",
"quantity": "100",
"type": "BBB"
},
{
"id": "114",
"quantity": "16",
"type": "AAA"
},
{
"id": "115",
"quantity": "20",
"type": "AAA"
},
{
"id": "116",
"quantity": "20",
"type": "BBB"
},
{
"id": "117",
"quantity": "80",
"type": "AAA"
}
]
},
{
"group": "3",
"classes": [
{
"id": "101",
"quantity": "60",
"type": "AAA"
},
{
"id": "102",
"quantity": "240",
"type": "BBB"
},
{
"id": "103",
"quantity": "1",
"type": "BBB"
},
{
"id": "104",
"quantity": "16",
"type": "AAA"
},
{
"id": "105",
"quantity": "2",
"type": "AAA"
},
{
"id": "106",
"quantity": "20",
"type": "BBB"
},
{
"id": "107",
"quantity": "240",
"type": "AAA"
}
]
}
]
1条答案
按热度按时间ep6jt1vc1#
查询需要聚合运算符,要使用它,您需要
$expr
运算符。过滤后的单据需要同时满足以下两个条件:
1.文档需要包含值为“101”、“102”、“103”的
classes.id
,并验证返回结果不是空数组。1.单据需要在
classes
数组中至少有一项满足id
in["101", "102"]
数组,并且quantity
(需要转换为数字)小于100。Demo @ Mongo Playground