[英]Comparing two subdocument fields in MongoDB
给定这样的文件
{
_id: '123456',
items: [{
itemId: 'abcd',
qty: 1
qtyMax: 2
}, {
itemId: 'defg',
qty: 3,
qtyMax: 3
}]
}
我想匹配此文档,因为其中一个子文档中的items.qty < items.qtyMax
。
我知道$where
,但是在这里并不适用,因为这将需要手动编写整个验证,检查items
并遍历所有元素...我希望有一个更好的解决方案。
由于聚合管道允许您使用计算值,因此您现在有一个更好的方法:
db.yourDBNameHere.aggregate( [
{ $project:
{ isStock:
{ $lt:["$items.qty", "$items.qtyMax"] } } },
{ $match:
{ isStock: true, }},
])
这将使用“项目”阶段创建一个计算值,在该计算值中检查项目数量是否小于项目最大数量,然后在“匹配”阶段仅匹配为真的文档。 isStock
只是一个变量名,可以用任何适合您的替换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.