如何更新数组中的对象内的数组?
我目前正在使用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
数组中的元素。