如何在对象内更新阵列中的数组?

时间:2014-07-01 20:05:55

标签: javascript arrays node.js mongodb

我目前正在使用Node.js MongoDB驱动程序,面对的结构如下:

users (database)
users (collection)  
    {           
        name: bob,
        data: [         
            {                   
                name: mydata,
                relations: [ ** I want to addToSet here! ** ]                   
            },              
            {                   
                name: mydata2,
                relations: []                   
            }           
        ]           
    },      
    {           
        name: jeff,
        data: [...same stuff...]            
    }

所以,我有一个数组,在一个对象中,在一个数组中,我的目的是为它添加一个条目。

我意识到这看起来像MongoDB不太适合的关系,但我试图容纳一些可能上传的关系数据。有没有人碰巧知道这样做的方法?不一定在一个查询中,只是以任何方式。

1 个答案:

答案 0 :(得分:1)

如TeTeT的评论中所述,您可以将$位置更新运算符与$addToSet结合使用来实现此目的。在shell中:

db.users.update(
    {name: 'bob', 'data.name': 'mydata'}, 
    {$addToSet: {'data.$.relations': 'add me'}})

$标识data数组中在查询条件中匹配的元素。