我正在尝试更新现有的 Mongo 记录,但收到“附加信息:元素名称‘ID’无效”。错误

我有一个 BsonDocument“文档”,其中包含我从另一个来源检索的数据,如下所示:

{ "ID" : "ABCecdcf9851efbf0ef66953", ListingKey : "234534345345", "Created" : ISODate("2017-08-04T00:31:23.357Z"), "Modified" : ISODate("2017-08-04T00:31:23.358Z"), "Field1" : 1, "Field2" : "0.09", "Field3" : "1.10", "Field4" : "1", "Field5" : "1" }

这是我编写的 C# 代码:
var collection = db.GetCollection<BsonDocument>("MyCollection");

//Hard coded for testing
var filter = Builders<BsonDocument>.Filter.Eq("ListingKey", "234534345345");

collection.UpdateOne(filter, document);

这与我试图用来更新的 BsonDocument 相关吗?我找到了这个文档,这让我认为这就是原因。如果是这样,有没有办法使用我提供的格式进行更新?

https://docs.mongodb.com/getting-started/csharp/update/

我有一个流程可以删除文档然后添加一个新文档,但为了效率起见,我需要更新它。理想情况下,它只会更新 BsonDocument 中存在的字段,并按原样保留 Mongo 文档中的现有字段。

最佳答案

我的问题是因为我在尝试更新时没有正确的值。我的代码适用于此:

var collection = db.GetCollection<BsonDocument>("MyCollection");

//Hard coded for testing
var filter = Builders<BsonDocument>.Filter.Eq("ListingKey", "234534345345");

var update = Builders<BsonDocument>.Update.Set("Created", DateTime.UtcNow);
foreach (BsonElement item in document)
{
    update = update.Set(item.Name, item.Value);
}
var result = collection.UpdateOne(filter, update);

我必须将我的字符串转换为更新的 BsonDocument。

关于c# - MongoDB updateOne,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45496613/

10-09 08:40