3

Mongodb 更新提供了$push附加到数组的修饰符。我的问题是我希望这发生在一个字典上,例如

如果我的记录最初看起来像这样:

{"collaborations":{'id1':{'role':'dev','scope':'dev'}}}

我想在“collaborations”字段字典中添加另一个项目(下面的“id2”),看起来像这样:

{"collaborations":{'id1':{'role':'dev','scope':'dev'},'id2':{'role':'qa','scope':'qa'}}}

我正在尝试$push

my_record.update({match_criteria},{$push,{"collaborations":{'id2':{'role':'qa','scope':'qa'}}}})

还有$addToSet

my_record.update({match_criteria},{$,{"collaborations":{'id2':{'role':'qa','scope':'qa'}}}})

使用这两种方法,mongodb 会抛出错误“无法将$addToSet$push)修饰符应用于非数组”。

如何为 dict 类型做到这一点?有任何想法吗?

4

1 回答 1

7

问题是$addToSetand$push修饰符适用于数组。

要更新子文档(这就是您需要的),只需使用$set带有点符号的修饰符来访问子文档(field.subfield):

my_record.update({
    match_criteria
}, {
    '$set': {
        'collaborators.id2': {
            // new document fields here
        }
    }
})
于 2012-08-15T11:07:54.720 回答