【发布时间】:2014-04-08 11:03:12
【问题描述】:
这是我收藏的示例文档:
Books
[
id: 1,
links:
[
{text: "ABC", "url": "www.abc.com"},
{text: "XYZ", "url": "www.xyz.com"}
]
]
我想在一次更新操作中替换链接数组。以下是如何修改上述文档的示例:
Books
[
id: 1,
links:
[
{text: "XYZ", "url": "www.xyz.com"},
{text: "efg", "url": "www.efg.com"}, <== NEW COPY OF THE ARRAY
{text: "ijk", "url": "www.ijk.com"}
]
]
如您所见,链接数组已被替换(旧数据已删除,新数据已添加)。
我很难使用Update.Set(),因为它说MyLinks<> 不能映射到BsonValue
我尝试了许多不同的方法来实现这一点,但都失败了,包括.PushAllWrapped<WebLinkRoot>("links", myDoc.WebLinks)。
我尝试的所有结果都是将新值附加到数组中,而不是替换数组。
似乎 MongoDB 没有提供简单的方法来替换子文档数组或 .ClearArray() 之类的方法,在单个查询中添加新元素之前,确保清除数组的最佳方法是什么?
【问题讨论】:
-
您在使用$set 运算符时走在正确的轨道上。这将用您想要的任何内容替换整个字段,在您的情况下,这是一个完全不同的数组。不过,现在无法使用确切的 C# 语法。
标签: mongodb mongodb-query mongodb-.net-driver