在我的 MongoDB 中,我有 Document1,如下所示。我想进入“main.accounts”(以及后来的“main.entries”)文档,并更新($set)“content”数组中的整个子文档。Wrt 子文档,到目前为止,我'已经能够在“内容”子数组中添加和删除文档。但在这种情况下,我想更新整个文档;不仅仅是更新($set)匹配文档中的一个属性。
下面,我尝试只使用一个 $set,一个带有 $elemMatch 的 $set。而且我也尝试过 findAndModify,但无济于事。当然,我已经 i) RTFM,环顾 ii) 互联网和 iii) SO,以找到解决方案。有没有人能够以这种方式更新整个文档?
谢谢蒂姆
更新尝试 1 - 这是唯一有效的更新,但将整个“内容”数组设置为哈希 ... { "fu" : "bar" }
db.bookkeeping.update( { 所有者:“twashing@gmail.com”, “content.content.tag”:“帐户”, “content.content.id”:“一个” }, { $set : { "content.$.content" : { "fu" : "bar" } } } )
更新尝试 2 - 这不会失败,但不会更新有问题的文档
db.bookkeeping.update( { 所有者:“fu”, 事情:{$elemMatch:{“content.content.tag”:“帐户”,“content.content.id”:“一个”}} }, { $set : { "thing" : { "fu" : "bar" } } } )
更新尝试 3 - 这不会失败,但不会更新有问题的文档
db.bookkeeping.update( {东西:{$elemMatch:{所有者:“fu”,“content.content.tag”:“帐户”,“content.content.id”:“one”}}}, { $set : { "thing.content.content.$" : { "fu" : "bar" } } } )
文件1
{ “_id”:“fid”, “内容” : [ { “内容” : [ { “id”:“一个”, “标签”:“帐户” }, { “id”:“两个”, “标签”:“帐户” }, { “id”:“三个”, “标签”:“帐户” }, { “id”:“四个”, “标签”:“帐户” }, { “id”:“五”, “标签”:“帐户” } ], “id”:“main.accounts”, “标签”:“帐户” }, { “标签”:“期刊”, “id”:“main.journals”, “内容” : [ { “标签”:“期刊”, “id”:“总账”, “名称”:“总账”, “类型” : ””, “平衡” : ””, “内容” : [ { “标签”:“条目”, “id”:“main.entries”, “内容” : [ ] } ] } ] } ], “所有者”:“福”, “标签”:“富巴” }