Node.js MongoDB:查找具有相同键值的文档集
我正在根据以下条件搜索收藏:Node.js MongoDB:查找具有相同键值的文档集,node.js,mongodb,Node.js,Mongodb,我正在根据以下条件搜索收藏: const orders=Order.find({status:'ACTIVE',isInFlux:true}); 然后,当我循环浏览每一个文档时,我再次使用以下命令搜索订单: Order.find({userId:Order.userId,状态:'ACTIVE',inflow:true}) 然后我检查是否有多个属于该用户的订单满足这些条件 有没有一种方法可以修改我的查询,一次获取这些文档,而不必遍历所有文档,也不必进行可能对我有帮助的聚合?看起来您只是在尝试按
const orders=Order.find({status:'ACTIVE',isInFlux:true});
然后,当我循环浏览每一个文档时,我再次使用以下命令搜索订单:
Order.find({userId:Order.userId,状态:'ACTIVE',inflow:true})
然后我检查是否有多个属于该用户的订单满足这些条件
有没有一种方法可以修改我的查询,一次获取这些文档,而不必遍历所有文档,也不必进行可能对我有帮助的聚合?看起来您只是在尝试按用户ID有条件地对订单进行分组。这可能会起到作用:
db.collection.aggregate([
{
"$group": {
"_id": "$user",
"orders": {
"$push": {
"$cond": [
{
$and: [
{
"$eq": [
"$isInFlux",
true
]
},
{
"$eq": [
"$status",
"active"
]
}
]
},
"$$ROOT",
"$$REMOVE"
]
}
}
}
}
])
操场:看起来您只是在尝试按用户ID有条件地对订单进行分组。这可能会起到作用:
db.collection.aggregate([
{
"$group": {
"_id": "$user",
"orders": {
"$push": {
"$cond": [
{
$and: [
{
"$eq": [
"$isInFlux",
true
]
},
{
"$eq": [
"$status",
"active"
]
}
]
},
"$$ROOT",
"$$REMOVE"
]
}
}
}
}
])
游乐场: