MongoDB - 使用$ set更新子文档

时间:2014-01-06 08:39:23

标签: javascript mongodb

我有这个文件:

{ "data" : "AP1IUY9Bfp", "me" : { "something" : "somevalue" } }

我有这个对象:

webpage: 'stackoverflow'

我如何$ push / $将此字段设置为document.me,因此最终结果将等于:

{ "data" : "AP1IUY9Bfp", "me" : { "something" : "somevalue", "webpage": "stackoverflow" } }

如果我使用$set尝试此操作,请执行以下操作:

db.collection('doc').update({id: 'AP1IUY9Bfp'}, {'$set': {'me': webpage: 'stackoverflow'}}

结果等于:

{ "data" : "AP1IUY9Bfp", "me" : { "webpage" : "stackoverflow" } }

(它覆盖了字段)

谢谢!

2 个答案:

答案 0 :(得分:3)

你想要做的是这样的事情:

{'$set': {'me.webpage': 'stackoverflow'} }

请注意,唯一的区别是我使用点符号指向子文档。

将其视为Mongo之外的普通JSON对象。使用点表示法来访问对象的属性 - mongo以相同的方式工作。

以下是有关子文档和mongo中点符号的相关文档的链接 - http://docs.mongodb.org/manual/core/document/#dot-notation

  

点符号

     

MongoDB使用点表示法来访问数组的元素并访问子文档的字段。

     

...

     

要使用点符号访问子文档的字段,请连接   带有点(。)和字段名称的子文档名称,并包含在其中   引用:

     

'<subdocument>.<field>'

答案 1 :(得分:-3)

一定不是

 db.collection('doc').update({id: 'AP1IUY9Bfp'}, {'me': $set: { webpage: 'stackoverflow'}}