我有Order
元和Shop
元.
db={
"orders": [
{
"_id": 1,
"shop": 1,
"price": 11
},
{
"_id": 2,
"shop": 2,
"price": 101
},
],
"shops": [
{
"_id": 1,
},
{
"_id": 2,
},
{
"_id": 3,
},
],
}
我想找出哪些store 没有订单.
我是这样做的
db.shops.aggregate([
{
$lookup: {
from: "orders",
let: {
shop: "$_id"
},
pipeline: [
{
$match: {
$expr: {
$eq: [
"$shop",
"$$shop"
]
},
},
},
],
as: "orders",
},
},
{
$project: {
user: "$user",
orderCnt: {
$size: "$orders"
}
}
},
{
$match: {
orderCnt: {
$eq: 0
}
}
},
])
这很管用.我还试过其他几种方法.但是它总是很贵的!
我如何才能更有效地找到订单为0的store ?由于有1000个订单和1000个store ,这需要很长的时间.