我正在使用 C# mongodb 驱动程序来更新 mongodb 中的记录。下面的代码对我来说工作正常,但它会自动将所有出现的“id”转换为“_id”。
var client = GetMongoClient();
var collection1 = GetMongoCollection("collection1");
var collection2 = GetMongoCollection("collection2");
using (var session = await client.StartSessionAsync())
{
session.StartTransaction();
try
{
var filter = Builders<BsonDocument>.Filter.Eq("_id", projectInfo._Id);
BsonDocument projectInfoBD = projectInfo.ToBsonDocument();
var recordAfterUpdate = await collection1.ReplaceOneAsync(session, filter, projectInfoBD);
......
}
catch (Exception ex)
{
await session.AbortTransactionAsync();
return false;
}
}
我的 C# 课程
public class ProjectInfo
{
public string _Id { get; set; } //This is primary key which unique for project info
public ProjectBasicDetail BasicDetails { get; set; }
}
public class ProjectBasicDetail
{
public string Name { get; set; }
public string Description { get; set; }
public Option Status { get; set; }
public TextOption CreatedBy { get; set; }
}
public class TextOption
{
public string Id { get; set; } //don't want to convert to "_id"
public string Name { get; set; }
}
public class Option
{
public int Id { get; set; } //don't want to convert to "_id"
public string Name { get; set; }
}
更新记录后,我希望更新后的记录看起来像这样
{
"_id": "kjsldfkjlsdkfjsd",
"basicDetails": {
"name": "test name",
"description": "test desc",
"status": {
"id": 11,
"name": "processing"
},
"createdBy": {
"id": "123",
"name": "some user"
}
}
}
但它保存如下。它将所有出现的“id”转换为我不想要的“_id”
{
"_id": "kjsldfkjlsdkfjsd", //This is ok
"basicDetails": {
"name": "test name",
"description": "test desc",
"status": {
"_id": 11, //This should be "id"
"name": "processing"
},
"createdBy": {
"_id": "123", //This should be "id"
"name": "some user"
}
}
}
提前致谢...