【问题标题】:MONGODB - adding a field in collection to a field in Item arrayMONGODB - 将集合中的字段添加到 Item 数组中的字段
【发布时间】:2013-09-30 03:19:46
【问题描述】:

假设我有以下原型的文档。

{
  cust_id: "abc123",
  ord_date: ISODate("2012-11-02T17:04:11.102Z"),
  status: 'A',
  price: 50,
  items: [
       { sku: "xxx", qty: 25, price: 1 },
       { sku: "yyy", qty: 25, price: 1 } 
  ]
}

我的要求是获得 SKU“XXX”的总价格,即 50 * 25(价格乘以数量)。如何在 MONGODB 中实现此查询的结果?

【问题讨论】:

    标签: arrays mongodb collections field


    【解决方案1】:
    db.YOUR_COLLECTION.aggregate({ 
        $match: {
            items.sku: "xxx"
        },
        $project: {
            "product": {$multiply: ["$items.qty","$items.price"]},
            _id: 0
        }
    });
    

    【讨论】:

    • 这正是我已经尝试过的,这是我得到的错误。 “$multiply 仅支持数字或日期类型,不支持数组”。请问还有什么建议吗?
    【解决方案2】:

    我可以通过将查询分成两个块来解决这个问题,如下所示。

    var pipeline1 = [

    {

    {

    "$unwind": "$items"

    },

    $match: {
        items.sku: "xxx"
    },
    $project: {
        "product":
    

    {

    $multiply: ["$items.qty","$items.price"]

    }, _id: 0 } }];

    R = db.tb.aggregate(管道);

    【讨论】:

      猜你喜欢
      • 2015-04-23
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 2022-10-25
      • 2019-03-09
      • 1970-01-01
      • 2015-09-06
      • 2013-06-26
      相关资源
      最近更新 更多