使用mongo查询按ID更新数组元素

bon*_*ash 7 mongodb

是否存在从15更新sc的查询,对于_id 1的id为2的数组元素,请说17?我在mongodb中有这个结构:

  { _id: 1,
    lb: [
       {
          id: 2,
          sc: 15
       },
       {
          id: 3,
          sc: 16
       }
        ]
  }
  { _id: 2,
    lb: [
       {
          id: 5,
          sc: 34
       },
       {
          id: 6,
          sc: 12
       }
        ]
  }
Run Code Online (Sandbox Code Playgroud)

我还有一个:有没有办法写一个查询来更新你刚才说的,如果没有更新id的数组元素,插入一个新的.我不想做两个查询 - 首先检查元素是否存在并更新它,第二个是在没有这样的情况下附加它.将它附加到一个查询中会很好.谢谢. - user3045201 1小时前

Par*_*ade 20

您可以使用以下查询更新它:

db.myCollection.update({"_id" : 1, "lb.id" : 2},{$set : {"lb.$.sc" : 17}})
Run Code Online (Sandbox Code Playgroud)

AFAIK,无法在单个查询中执行您想要的操作.您必须为每个查询单独进行查询.