在我的 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”,
“内容” : [ ]
}
]
}
]
}
],
“所有者”:“福”,
“标签”:“富巴”
}