MongoDB在匹配的键值对旁边插入数据

时间:2016-05-27 20:47:31

标签: javascript arrays mongodb meteor

我尝试定位数组中的对象,然后在匹配的键/值对旁边的同一对象中插入数据。这是一个例子:

profile = [
   {
      data: 'value',
      array: [
         'one',
         'three'
      ]
   }
]

var i = 0;
var selector = 0;
_.each(profile, function(elem) {
    if (elem.data === 'value') {
        selector = i;
    }
    i++
}
profile[selector].array.push('two');

这是一个添加到对象/数组数组的解决方法,但我试图找到一种方法来使用Meteor MongoDB。是否有一个选择器,使我能够定位适当的数组(具有匹配的键/值对)然后瞄准"数组"在它旁边并向它推送一些东西?

1 个答案:

答案 0 :(得分:1)

假设您已在mongodb中存储了一个看起来像这样的对象

{
    profile : [
        {
            data: 'value',
            array: [
                'one',
                'three'
            ]
        }
    ]
}

我能够在mongodb shell中使用它。

db.yourCollection.update(
    {"profile.data":"value"},
    {"$push":
        {
            "profile.$.array":"two"
        }
    }
);

这将找到配置文件属性数据等于"值"的记录。推动"两个"属性数组。

参考: Mongodb $push in nested array