Meteor更新多个嵌套数组元素

时间:2015-12-15 15:38:32

标签: javascript mongodb meteor

let items = [
     {
         name: "Choco",
         id: "12344",
         qty: 24,
         status: "open"
     },
     {
         name: "Mils",
         id: "12346",
         qty: 5,
         status: "open"
     },
     {
         name: "boom",
         id: "12345",
         qty: 10,
         status: "open"
     }
 ];

鉴于上面的数组,是否可以更新文档而无需在每个文档上调用forEach。

例如我目前正在做的是这个

  _.each(items, function( item ) {
Orders.update({_id: doc.orderId, "items.id": item.id},
                   {
                     "$set": {
                       'items.$.status': item.status,
                       'items.$.qty': item.qty,
                     }
                   })
})

是否可以一次更新整个数组而无需创建新的mongo db事务

1 个答案:

答案 0 :(得分:0)

您可以阅读所有订单:

 var order = Orders.findOne({_id: doc.orderId});

比使用新数据调整order.items,然后在单个操作中更新:

Orders.update({_ id:doc.orderId},{" $ set":{items:order.items}});