我在 MongoDB 中有一个文档集合,其结构如下(有多个容器文档,每个包含Sessions
,每个会话包含1个Order,每个Order包含多个Item):
{
"Sessions" : [{
"ID" : "1882a092-d395-45d1-b36b-e2fa3df81b95",
"Order" : {
"Items" : [{
"_id" : "a9c94a5e-10ef-433d-9c63-f4555eb7c2a7",
"Title" : "UPDATE THIS",
}]
}
}],
"_id" : "1b640bc4-fdb4-49b1-9c60-e4c6f1bd0405"
}
我想更新Title
给定的Item
在会话中的订单内,同时知道_id
项目的(我也知道会话的 ID,如果有帮助的话):
我已经尝试过以下方法:
col.Update(Query.EQ("Sessions.ID", sessionID),
Update.Set("Sessions.$.Order.Items.Title", newTitle));
col.Update(Query.EQ("Sessions.Order.Items._id", id),
Update.Set("Sessions.Order.Items.$.Title", newTitle));
两者都抛出异常WriteConcern detected an error 'cannot use the part (Sessions of Sessions.Order.Items.0.Status) to traverse the element ...
。我还尝试了使用组合查询的不同组合Query.And
这可能毫无意义,以至于不值得在这里发布。
如何使用 C# 驱动程序更新文档数组中包含的子文档中的字段?
我意识到这不能单独使用位置运算符来完成(并且位置运算符不会神奇地匹配内部数组)。
我正在寻找开箱即用的解决方案,如何在不更改架构的情况下完成此类更新。