【问题标题】:How do I update an an array, within an object, within an array?如何在对象内、数组内更新数组?
【发布时间】:2014-07-01 20:05:55
【问题描述】:

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

【问题讨论】:

  • 这个 mongoshell 命令可能有用:db.sample.update({'data.name': 'mydata'}, {$addToSet: {'data.$.relations': 4}},真的,真的)

标签: javascript arrays node.js mongodb


【解决方案1】:

正如 TeTeT 在 cmets 中所述,您可以通过将 $ 位置更新运算符与 $addToSet 结合使用来完成此操作。在外壳中:

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

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

【讨论】:

    猜你喜欢
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 2019-05-25
    • 2020-08-17
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多