2012-08-15 56 views
3

Mongodb更新提供$push修饰符以附加到数组。我的问题是,我想这是对的字典如

发生,如果我的记录是这样开始:

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

我想另一个项目(“ID2”下)添加到“合作”领域快译通看起来是这样的:

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

我试图用$push

​​

并与$addToSet

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

有了这两个,MongoDB的抛出的错误“$addToSet$push)修饰符不能适用于非阵列”。

这是怎么做的字典类型?有任何想法吗?

回答

6

问题是$addToSet$push修饰符与数组一起工作。

要更新子文档(这是什么您这里需要),只要用$set修饰符点标记访问子文档(field.subfield):

my_record.update({ 
    match_criteria 
}, { 
    '$set': { 
     'collaborators.id2': { 
      // new document fields here 
     } 
    } 
}) 
+0

OO这是简单的:) – auny 2012-08-15 11:16:55

+0

请标记为回答帮助别人搜索这个问题时:) – Ross 2012-08-15 11:46:04