我有这个文件:
{ "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" } }
(它覆盖了字段)
谢谢!
答案 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'}}