Mongodb更新提供了$push附加到数组的修饰符.我的问题是我希望这发生在一个字典上,例如
如果我的记录最初看起来像这样:
{"collaborations":{'id1':{'role':'dev','scope':'dev'}}}
Run Code Online (Sandbox Code Playgroud)
我想在"协作"字段dict中添加另一个项目(下面的"id2"),看起来像这样:
{"collaborations":{'id1':{'role':'dev','scope':'dev'},'id2':{'role':'qa','scope':'qa'}}}
Run Code Online (Sandbox Code Playgroud)
我正在尝试$push:
my_record.update({match_criteria},{$push,{"collaborations":{'id2':{'role':'qa','scope':'qa'}}}})
Run Code Online (Sandbox Code Playgroud)
还有$addToSet:
my_record.update({match_criteria},{$,{"collaborations":{'id2':{'role':'qa','scope':'qa'}}}})
Run Code Online (Sandbox Code Playgroud)
使用这两个,mongodb抛出错误"无法应用$addToSet($push)修饰符到非数组".
如何为dict类型做到这一点?有任何想法吗?
问题是,$addToSet和$push改性剂使用数组.
要更新子文档(这是您需要的),只需使用$set带点符号的修饰符来访问子文档(field.subfield):
my_record.update({
match_criteria
}, {
'$set': {
'collaborators.id2': {
// new document fields here
}
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1705 次 |
| 最近记录: |