繁体   English   中英

比较MongoDB中的两个子文档字段

[英]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只是一个变量名,可以用任何适合您的替换。

https://docs.mongodb.com/manual/core/aggregation-pipeline/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM