【问题标题】:Increment value of an array element name quantity with array object数组对象的数组元素名称数量的增量值
【发布时间】:2016-04-27 17:03:29
【问题描述】:

我有一个包含多个对象的数组,我想在我的顺序中使用_id 递减qty 的值。这是我的努力:

funcs.updateOrder=function(request, reply){
    Order.update({
        "order._id" : request.payload.orderid
    }, {
        "$set" : {
            "$inc":{"order.$.qty" : {qty:request.payload.qty}},
            "order.$.reason" : request.payload.reason,

        }
    },
    function(err) {
        if(err){
            reply(err).code(500);
        }
        else{
            reply({"message":"success"});
        }

    });


};

这是我的 mongodb 架构:-

{
  "_id": "57206feb05a533ac0f84447e",
  "createdAt": "2016-04-27T07:53:15.108Z",
  "updatedAt": "2016-04-27T07:53:15.108Z",
  "orderno": "ORDER-NO-04-2016-2",
  "order": [
    {
      "qty": -1,
      "model": "56dd2a2adcb3dde8067906dc",
      "vendorname": "57079f50182dd95c16c2d790",
      "partname": "57206ddd566d86580ec2d480",
      "make": "56dd2a29dcb3dde80679062e",
      "_id": "57206feb05a533ac0f844482",
      "reason": "unable to delivered"
    },
    {
      "qty": 12,
      "model": "56dd2a2adcb3dde8067906dc",
      "vendorname": "57079f50182dd95c16c2d790",
      "partname": "57206ddd566d86580ec2d480",
      "make": "56dd2a29dcb3dde80679062e",
      "_id": "57206feb05a533ac0f844481",
      "reason": "unable to delivered"
    },
    {
      "qty": 66,
      "model": "56dd2a2adcb3dde8067906f1",
      "vendorname": "5710be56dc475f640e83a0ba",
      "partname": "57206ddd566d86580ec2d480",
      "make": "56dd2a29dcb3dde80679062e",
      "_id": "57206feb05a533ac0f844480",
      "reason": null
    },
    {
      "qty": 55,
      "model": "56dd2a2adcb3dde806790704",
      "vendorname": "57079f50182dd95c16c2d790",
      "partname": "57206ddd566d86580ec2d480",
      "make": "56dd2a29dcb3dde80679062e",
      "_id": "57206feb05a533ac0f84447f",
      "reason": null
    }
  ],
  "__v": 0
}

【问题讨论】:

    标签: arrays node.js mongodb


    【解决方案1】:

    $inc 运算符是一个独立的field update operator,不像您所做的那样与 $set 一起用作嵌入式运算符。您需要将两者分开:

    funcs.updateOrder = function(request, reply){
        Order.update(
            { "order._id" : request.payload.orderid }, 
            {
                "$set": { "order.$.reason": request.payload.reason },
                "$inc": { "order.$.qty": request.payload.qty }
            }, function(err) {
                if (err){
                    reply(err).code(500);
                }else{
                    reply({"message": "success"});
                }
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      • 2023-03-02
      • 2018-08-27
      相关资源
      最近更新 更多