c# - 使用 ObjectId.GenerateNewId() 还是离开 MongoDB 来创建一个?

标签 c# mongodb

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

大多数时候,当我在集合中插入文档时,我不会设置 _id 字段的值。 MongoDB 自动创建 ObjectId 值。

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

最佳答案

当您插入一个新的 mongodb 文档时,子驱动程序会检查是否存在具有 BsonId AttributeClass 的属性。如果存在且为空,则创建一个新的 ObjectId,如果在文档插入期间不存在,mongodb 将生成一个新的 ObjectId
有时用户会遇到“只有零”的 ObjectId 问题,因此我的建议是结合使用 BsonID 属性类和 ObjectId.GenerateNewId 这样您就可以确定该属性不会有奇怪的行为。
例如

public class SomeClass {

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

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

}

关于c# - 使用 ObjectId.GenerateNewId() 还是离开 MongoDB 来创建一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42349063/

相关文章:

c# - 为什么我不能在变量中捕获 FakeItEasy 期望值?

c# - 使用 Uri 创建时,新 Runspace 对象的 SessionStateProxy 属性为空

node.js - MongoDB 请求 : Filter only specific field from embedded documents in embedded array

c# - MongoDB - 更新字段或添加字段(如果 BsonDocument C# 上不存在)

c# - 使用 LINQ 从列表中随机选择一个匹配的字符串

c# - 应用程序代码中的数据库访问架构

mongodb - Mongod 错误(随自制软件安装)

javascript - 如何在运行 Mongodb 的 Mongoose 中执行脚本?

mongodb - 如何运行 main.go 文件,而不必在容器外部单独运行它们?

c# - .net 中最好的免费常微分方程库