Обновление вложенного массива с использованием initializeOrderedBulkOp - PullRequest
0 голосов
/ 08 октября 2018

Попытка вставить или обновить данные bill_info внутри массива приложения.Я использую четыре входных параметра для отдела поиска: sub_dept, application.name и type.Используя initializeOrderedBulkOp и ниже, запрос монго

bulk.find({ $and : [{ "department_name" : "Finance" , 
  "sub_dept":{$elemMatch: {name: "Direct" }}, 
  "sub_dept.application": {$elemMatch: {name:"HRM"}} , "type" : "Online" }]}).update
   ({ $addToSet : { "sub_dept.$.application.0.bill_info" : 
     { "items" : [{ "qty" : "860000",  "cost" : 390}],
        "invoice" : 1000}
  }});

Мое требование заключается в обновлении информации о счете в любом из массивов приложения на основе соответствующих четырех входных параметров (отдел, sub_dept, application.name и тип).Вышеупомянутый запрос иногда работает, но не во всех случаях.

{
  "_id": ObjectId("5bba5d918169541704d38a6e"),
  "department": "Finance",
  "sub_dept": [
    {
      "name": "Indirect",
      "application": [
        {
          "name": "Cab",
          "date": "25/10/2013",
          "cp": "Sam",
          "bill_info": [
            {
              "items": [
                {
                  "qty": "32",
                  "cost": NumberInt(22300)
                },
                {
                  "qty": "6000",
                  "cost": NumberInt(390)
                }
              ],
              "invoice": "1000",

            }
          ]
        },
        {
          "name": "Bus",
          "date": "25/10/2013",
          "cp": "John"
        }
      ]
    },
    {
      "name": "Direct",
      "application": [
        {
          "name": "HRM",
          "date": "25/10/2013",
          "cp": "Alen"
        },
        {
          "name": "Showroom",
          "date": "25/10/2013",
          "cp": "Xavier""bill_info": [
            {
              "items": [
                {
                  "qty": "32",
                  "cost": NumberInt(22300)
                },
                {
                  "qty": "6000",
                  "cost": NumberInt(390)
                }
              ],
              "invoice": "2000",

            }
          ]
        }
      ]
    },
    {
      "name": "Hybrid",
      "application": [
        {
          "name": "Telephone",
          "date": "25/10/2013",
          "cp": "Galn""bill_info": [
            {
              "items": [
                {
                  "qty": "32",
                  "cost": NumberInt(22300)
                },
                {
                  "qty": "6000",
                  "cost": NumberInt(390)
                }
              ],
              "invoice": "3000",

            }
          ]
        },
        {
          "name": "Mobile",
          "date": "25/10/2013",
          "cp": "Paul"
        }
      ]
    }
  ],
  "type": "online"
}

Любая помощь по этому вопросу будет действительно полезна

...