我正在尝试更新现有的 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/