使用ObjectId.GenerateNewId()或让MongoDB创建一个?

Efs*_*dis 9 c# mongodb

在C#中,我可以使用ObjectId.GenerateNewId()来生成ObjectId值.

大多数情况下,当我在集合中插入文档时,我没有设置_id字段的值.MongoDB自动创建ObjectId值.

我想问一下,使用ObjectId.GenerateNewId()方法手动设置它是否安全.

Tin*_*wor 18

当您插入新的mongodb文档时,子驱动程序检查是否存在具有BsonIdAttributeClass的属性.如果存在且为null,则创建一个新的ObjectId,如果在文档插入期间不存在,mongodb将生成新的ObjectId.
有时用户遇到"只有零"ObjectId的问题,因此我的建议是使用BsonID属性类的组合,ObjectId.GenerateNewId因此你确定该属性不会有奇怪的行为.
例如

public class SomeClass {

    [BsonId]
    public ObjectId MySuperId { get; set; }

    public SomeClass() {
        this.MySuperId = ObjectId.GenerateNewId();
    }

}
Run Code Online (Sandbox Code Playgroud)