插入不创建ID?

gol*_*ger 8 c# mongodb mongodb-.net-driver

我用getter和setter创建了一个简单的对象:

public class MemberCanonical : IMemberCanonical
{
    public ObjectId Id { get; set; }
    public String username { get; set; }
    public String email { get; set; }
    public String status { get; set; }
    public IEnumerable<string> roles { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我想在数据库中插入一个新成员:

try
{
    memberObj.username = username;
    memberObj.email = email;
    memberObj.status = "active";
    // memberObj.Id = new ObjectId().ToString();
    this.membershipcollection.Insert(memberObj, SafeMode.True);
    return true;
}
catch(Exception ex)
{
    return false;   
}
Run Code Online (Sandbox Code Playgroud)

我希望insert能够创建一个唯一的_id(Id),但这并没有发生.当我查看_id字段时插入,我得到"0000000 ...."

为了让Mongo在插入时生成自己的_id,我需要做什么?

And*_*ich 11

只需使用[BsonId]属性标记您的Id 属性,生成的id值就会出现!

public class MemberCanonical : IMemberCanonical
{
    [BsonId]
    public ObjectId Id { get; set; }
Run Code Online (Sandbox Code Playgroud)
this.membershipcollection.Insert(memberObj, SafeMode.True);
var idYouLookingFor = memberObj.Id;
Run Code Online (Sandbox Code Playgroud)

或者@Kobi建议的另一种方式:"使用_id字段名称代替Id"也应该有效.