2017-08-15 66 views
0

一個數組的多個項目,這是我的文檔模式:如何更新MongoDB中

{ 
     "_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" 
    } 
我的查詢

我會送的product_id我需要更新和product_status的名單列表,我需要改變爲如

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

所以,我怎麼可以更新的內部產品的詳細信息,其ID在product_ids陣列中的所有產品只是product_status。

回答

2

這應該爲你工作:

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] } }); 
} 
+0

是這將解決我的問題,但在這裏,我將不得不做多個更新的要求,但我用collection.save在[https://stackoverflow.com/questions/4669178/how-to-update-multiple-array-elements-in-mongodb(]如何在mongodb中更新多個數組元素) –