在一个Mongoskin查询中推送多个数组

时间:2014-09-24 11:49:12

标签: javascript node.js mongodb mongodb-query

我使用Mongodb和Mongoskin。我有以下数据结构:

clients: {
  firstArray: [
    {
      _id: '153'.
      someField1: 'someVal1',
      someField2: 'someVal2'
    }
    ...
  ]

  secondArray: [
    {
      _id: '7423'.
      someField1: 'someVal1',
      someField2: 'someVal2',
      firstArrayIds: ['153, 154, 155, ...']
    }
    ...
  ]
}

以某种方式{@ 1}}某个对象可能$push,并在同一查询中将firstArray添加到_id¨?

1 个答案:

答案 0 :(得分:3)

谁说你不能这样做?它非常简单,因为$push是一个顶级"更新修饰符,因此采用"文档级别"论证案例:

db.collection.update(
    { "_id": someDocumentId, "secondArray._id": 7423 },
    {
       "$push": {
           "firstArray": someNewObject,
           "secondArray.$.firstArrayIds": someNewObject._id
       }
    }
);

因此positional $运算符允许您更新" secondArray"的元素。符合你的条件。

不能做的唯一事情是匹配文档中多个数组元素的元素,并要求那些"位置"要被更新。正如文档所述,只有第一个匹配索引才会存储给位置运算符。

但是在你要求做的事情上,这只需要一次匹配,那么这很好。