Mongodb 在一次查询中统计并匹配相关文档
我有两个集合:Mongodb 在一次查询中统计并匹配相关文档,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我有两个集合:测试和报告。它们是相关的,报告使用test.id进行现场测试。每个Test文档都有testers\u count字段 此外,我还编写了一个查询,该查询应仅返回测试,且测试人员计数大于或等于相关报告文档的计数 db.test.aggregate([ { $lookup: { from: 'reports', localField: '_id', foreignField: 'test',
测试
和报告
。它们是相关的,报告
使用test.id
进行现场测试。每个Test
文档都有testers\u count
字段
此外,我还编写了一个查询,该查询应仅返回测试
,且测试人员计数
大于或等于相关报告
文档的计数
db.test.aggregate([
{
$lookup:
{
from: 'reports',
localField: '_id',
foreignField: 'test',
as: 'reportsList'
}
},
{
$match: {
"settings.testers_count": {$gte: {$size: "$reportsList"}}
}
}
])
问题是代码不起作用,也不会返回任何错误。很确定您的意思是:
db.test.aggregate([
{“$lookup”:{
“发件人”:“报告”,
“localField”:“\u id”,
“外域”:“测试”,
“作为”:“报告列表”
}},
{“$redact”:{
“$cond”:{
“如果”:{
“$gte”:[
“$settings.testers\u count”,
{“$size”:“$reportsLIst”}
]
},
“然后”:“$$KEEP”,
“else”:“$$PRUNE”
}
}}
])
假定$settings.testers\u count
实际上解析为“单数”属性,并且不是“数组”的成员
而是使用和的“逻辑”形式进行评估
此外,运算符只能在允许的计算表达式中使用。运算符在概念和运算符语法上与.find()
完全相同,因为它执行“查询”,并且实际上只能使用“查询运算符”和no计算逻辑表达式
这才是真正的目的。这是一个“逻辑表达式”形式的集合名为
Reports
或Reports
?@Blakes您是对的,$match是“不正确的”。据我所知,值应该是数字或字符串。但是如果没有错误,这是一个很难理解的问题(这就是为什么这个问题有一个“答案”。$match
在这个上下文中不是正确的用法。