[英]Find documents having a field greater than the length of an embeded array
下面是一个组架构:
GroupSchema{
membersLimit: Number,
listOfStudents: [String]
}
我想找到学生人数少于membersLimit
的所有组。
我尝试了以下查询
await Group.find({
membersLimit: { $gt: 'listOfStudents'.length },
})
此查询返回学生小于 14 的文档,即listOfStudents
的长度。
我也试过这个
await Group.find({
listOfStudents: { $size: { $lt: 'membersLimit' } },
})
此查询返回以下错误
error The expression evaluated to a falsy value:
assert.ok(!isNaN(val))
有没有办法用单个查询来做到这一点?
您需要使用$expr
来比较数组大小和字段,如下所示:
db.collection.find({
$expr: {
$gt: [
"$membersLimit",
{
"$size": "$listOfStudents"
}
]
}
})
游乐场链接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.