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

我目前正在使用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不太适合的关系,但我试图容纳一些可能上传的关系数据。 有没有人碰巧知道一个方法来做到这一点? 不一定在一个查询中,只是以任何方式。

正如在TeTeT的评论中指出的那样,你可以通过$位置更新操作符和$addToSet 。 在shell中:

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

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