gpt4 book ai didi

mongodb - 在一个查询中计算和匹配相关文档

转载 作者:可可西里 更新时间:2023-11-01 10:42:24 24 4
gpt4 key购买 nike

我有两个集合:测试报告。它们是相关的,Reports 具有带 Test.id 的现场测试。每个 Test 文档都有 testers_count 字段。

我还写了查询应该只返回 Teststesters_count 大于或等于相关 Reportscount文档。

db.test.aggregate([
{
$lookup:
{
from: 'reports',
localField: '_id',
foreignField: 'test',
as: 'reportsList'
}
},
{
$match: {
"settings.testers_count": {$gte: {$size: "$reportsList"}}
}
}
])

问题是代码不工作也不返回任何错误。

最佳答案

很确定你的意思是:

db.test.aggregate([
{ "$lookup": {
"from": "reports",
"localField": "_id",
"foreignField": "test",
"as": "reportsList"
}},
{ "$redact": {
"$cond": {
"if": {
"$gte": [
"$settings.testers_count",
{ "$size": "$reportsLIst" }
]
},
"then": "$$KEEP",
"else": "$$PRUNE"
}
}}
])

假设 $settings.testers_count 实际上解析为“单一”属性,而不是“数组”的成员。

使用 $redact相反,$gte 的“逻辑”形式用于评估。

还有 $size运算符只能用在像$redact这样的求值表达式中允许。 $match运算符在概念和运算符语法上实际上与 .find() 相同,因为它执行“查询”,并且实际上只能使用“查询运算符”和no 计算出的逻辑表达式。

这就是$redact其实是为了。它是 $match 的“逻辑表达式”形式

关于mongodb - 在一个查询中计算和匹配相关文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36312231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com