c# - MongoDB updateOne

标签 c# mongodb

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

相关文章:

c# - WMI Win32_NetworkAdapterConfiguration 和 SetDNSSuffixSearchOrder 方法

javascript - 浏览器不在启用 CORS 的情况下跨域发送 cookie

c# - 如何实现 DateTime 实体属性以始终设置 DateTime.Now

c# - 在 xp 上找不到文件

javascript - 扁平化分层 json 数据以用于表格显示

javascript - 类型错误 : Object #<MongoClient> has no method 'db'

c# - 在运行时禁用 HP UFT API 上的检查点

java - spring data mongodb 1.3.2项目运行问题

php - Laravel jenssegers/laravel-mongodb ownsTo 关系抛出错误

python - Geojson 到 MongoDB/Mongoengine 的属性格式