通过嵌入式阵列MongoDB更新/迭代

秘密

我有一个像这样的文档结构:

{   
  data: null,
  subArray: [{
    key: 'a',
    subData: [] 
  }, {
    key: 'b',
    subData: []
  }] 
}

我将收到一个包含subArray的数组keys,例如:`['a','b']

我想遍历subArray将值推入subData,以便当subArray是时['a','b'],我的数据现在就像:

{   
  data: null,
  subArray: [{
    key: 'a',
    subData: ['dataToPush'] 
  }, {
    key: 'b',
    subData: ['dataToPush']
  }] 
}

我有这个查询来做到这一点:

update({_id:"...", "subArray.key":{"$in":['a','b']},
       {'$addToSet':{'subArray.$.subData':'...'}}})

认为那$in会让我循环我的人生subArray但是我意识到这是行不通的,因为$in获取与数组中的元素匹配的元素,所以我将获取数据,但不会在subArray上进行迭代。

是否可以使用特定的选择器/修饰符组合来完成此操作?

wdberkeley

不,不能使用多个键。对于一个键"a",您可以使用类似以下的查询

db.test.update({ "subArray.key" : "a" }, { "$push" : { "subArray.$.subData" : "dataToPush" } })

但是$位置运算符只能在一次更新中用于一次匹配。您可以对每个键进行上述更新,或者检索文档,根据所有键进行修改,然后保存在原始文档上。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章