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

时间:2013-11-28 09:36:36

标签: 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
       }
        ]
  }

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

1 个答案:

答案 0 :(得分:16)

您可以使用以下查询进行更新:

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

AFAIK,无法在单个查询中执行您想要的操作。你必须为每个人分别进行查询。