插入后C#MongoDB InsertMany缺少_id

时间:2017-03-05 06:11:12

标签: c# mongodb

所以我有两个功能如下。 InsertOne()函数工作正常,并使用新创建的_id更新BsonDocument。但是,InsertMany()函数不返回对象ID。我调试了代码,没有任何单个文档使用_id字段进行更新。

InsertMany()函数确实将文档插入到数据库中,我可以看到它们都有来自Mongo shell的对象ID。

我的代码中的模型没有Id字段。它们正在使用MyModel.ToBsonDocument()等代码进行转换。

我是否遗漏了一些东西来取回批量插入产生的ID?

    public string InsertOne(BsonDocument document)
    {
        MongoCollection.InsertOne(document);
        return document["_id"].ToString();
    }

    public string[] InsertMany(IEnumerable<BsonDocument> documents)
    {
        MongoCollection.InsertMany(documents);
        return documents.Select(item => Convert.ToString(item["_id"])).ToArray();
    }

编辑 - 不确定这是否是一个错误,但我刚才意识到如果我使用列表而不是IEnumerable,则InsertMany()按预期工作。

1 个答案:

答案 0 :(得分:1)

它与如何在LINQ中创建find . -name '*.txt' -execdir awk '{print>$1}' {} + 的集合有关。 IEnumerable通过对其进行枚举并填充MongoCollection.InsertMany来实现集合下的集合。然而,它是一个新的集合,它不是你最初传入的_id,这就是为什么它没有id。如果您传递IEnumerable,则该集合已经实现,因此它只会填充其中的字段。

相关问题