0

This is my document schema :

  {
        "_id": "599345434a6caf2d9d2e2b67",
        "total": 870,
        "product_info": [
            {
                "product_id": "597de6e76dbf1a0004b98eb5",
                "mrp": 20,
                "quantity": 1,
                "name": "bottle",
                "product_status": 1
            },
            {
                "product_id": "597dea4c6dbf1a0004b98eba",
                "mrp": 300,
                "quantity": 1,
                "name": "purse",
                "product_status": 1
            },
            {
                "product_id": "597dea7d6dbf1a0004b98ebb",
                "mrp": 250,
                "quantity": 1,
                "name": "switch board",
                "product_status": 1
            },
            {
                "product_id": "597deade6dbf1a0004b98ebc",
                "mrp": 150,
                "quantity": 1,
                "name": "all out",
                "product_status": 1
            },
            {
                "product_id": "597deb196dbf1a0004b98ebd",
                "mrp": 150,
                "quantity": 1,
                "name": "neem extract",
                "product_status": 1
            }
        ],
        "shop_id": "597de6056dbf1a0004b98eb4",
        "shop_name": "Pradeep's Shop",
        "seller_uid": "469835666700",
        "user_id": "598b9b700354020004f674b6",
        "user_name": "bhupendra",
        "payment_id": "NA",
        "address_id": "NA",
        "payment_type": 1,
        "address_type": 1,
        "start_date": "2017-08-15T18:53:38.976Z",
        "last_update_date": "2017-08-15T19:02:27.245Z",
        "order_status": 1,
        "delivery_status": 1,
        "payment_status": 1,
        "delivery_date": "NA",
        "payment_date": "NA"
    }

in my query i will send list of product_id i need to update and list of product_status i need to change to for e.g

var product_ids=["597de6e76dbf1a0004b98eb5","597dea7d6dbf1a0004b98ebb"];
var product_status=[2,3];

so how can i update just the product_status of all products inside product_info whose ids are in product_ids array.

1 Answers1

2

This should work for you:

var bhupendra = localdb.collection('bhupendra');

var product_ids=["597de6e76dbf1a0004b98eb5","597dea7d6dbf1a0004b98ebb"];
var product_status=[2,3];

for (var i = 0; i < product_ids.length; i++) {
  bhupendra.update({_id: "599345434a6caf2d9d2e2b67", "product_info.product_id": product_ids[i]}, { $set: { "product_info.$.product_status" : product_status[i] } });
}
Joseph Milane
  • 184
  • 1
  • 9
  • yes this will solve my problem but here i will have to do multiple update request but I used collection.save as in [https://stackoverflow.com/questions/4669178/how-to-update-multiple-array-elements-in-mongodb(]How to Update Multiple Array Elements in mongodb) – Bhupendra Singh Chauhan Aug 16 '17 at 06:59