【发布时间】:2020-08-09 00:30:04
【问题描述】:
我正在寻找对我的聚合中的 $match 阶段的查询,它与in this question 的作用几乎相同,但是......
MongoPlayground with example collection.
结果应该是这样的:
[
{
"method": 3,
"item": 1,
"rank": 3 //because it has field named rank, and suits condition {rank: $max}
},
{
"method": 4,
"item": 1 //we need this, because document doesn't have rank field at all
},
{
"method": 5,
"item": 1 //we need this, because document doesn't have rank field at all
}
]
我已经尝试过的事情:
{
$match: {
$or: [
{item: id, rank: {$exists: true, $max: "$rank"}}, //id === 1
{item: id, rank: {$exists: false}} //id === 1
]
}
}
UPD:就目前而言,我可能不仅限于
$match阶段,$project在默认匹配后也是相关的,所以我可以在$match阶段通过id请求每个文档,无论如何,是否有 docrank字段,然后在$project阶段按等级$exists进行“分离”
【问题讨论】:
-
不清楚您要做什么...在您的示例 + 预期结果中,您跳过前 2 个文档...请提供有效的示例/预期结果...
-
@Valijon 是吗?我想从集合中找到没有特定字段的每个文档,但如果有,则将条件应用于该字段。并且这个条件应该有一个字段操作符。猜猜看,再简单不过了。
-
现在更清楚了,谢谢。检查我的答案
标签: javascript mongodb mongoose mongodb-query aggregation-framework