在多个索引处使用嵌套数组更新Mongoose文档

时间:2014-07-16 17:31:27

标签: mongodb mongoose database

我在使用嵌套数组更新架构时遇到问题,在阵列的多行中有一个objectID。如果可以,请帮忙!

我的架构如下所示:

var ProblemSchema = new Schema({
      data : "etc..."
      array1 : [{
        _id : { type: 'String' },
        array2: [{ type: Schema.Types.ObjectId}]
      }]}

我可以使用更新对象中的$运算符轻松地将objectId添加到SINGLE嵌套数组中,如下所示:

var query = {array1._id : ID};
var update = {$push : {'array1.$.array2' : objectId}};
Problem.update(query, update) 

但是,我希望能够在一个查询中将相同的objectId添加到MULTIPLE array2s(即对应于不同的array1 id),但是$运算符只匹配查询的第一个匹配项,因此我可以'按照上面概述的方式进行。

我也试图避免在服务器上使用for循环(我意识到我可以找到()正确的文档然后使用for循环,我在其中手动将objectID推送到正确的array2s但是解决方案涉及大量开销),有人能想到解决方案吗?

1 个答案:

答案 0 :(得分:2)

从MongoDB 2.6开始,使用单个更新查询无法做到这一点。 $ positional operator是数组中第一个匹配元素的占位符。有一个MongoDB功能请求,用于更新阵列SERVER-1243的所有匹配元素,您可以在此期间跟踪这些元素。