gpt4 book ai didi

c# - 如何在 C# .Net 中使用 InsertOneAsync 将文档插入到 MongoDB 并返回相同的文档或其 ID

转载 作者:行者123 更新时间:2023-12-03 21:36:21 30 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Get _id of an inserted document in MongoDB?

(7 个回答)


2年前关闭。




我正在编写一个通用方法来充当数据访问层,以使用 C# .Net 将文档插入到 MongoDB。我的方法如下所示。此处的 Collection 是从 MongoDB 检索的 MongoCollection。

public async T Create(T entity){
await Collection.InsertOneAsync(entity);
}

我想返回插入的实体或其由 MongoDB 自动生成的 ID。 InsertOneAsync 方法正在返回一个任务。我尝试将其更改如下。但是它的返回类型是void。
Collection.InsertOneAsync(entity).GetAwaiter().GetResult();

有没有办法使用 InsertOneAsync 方法取回 id 或实体。我正在为 C# 使用 MongoDB 驱动程序。

最佳答案

生成 MongoDB 中的 ID on the client side .

If the document does not specify an _id field, then MongoDB will add the _id field and assign a unique ObjectId for the document before inserting. Most drivers create an ObjectId and insert the _id field, but the mongod will create and populate the _id if the driver or application does not.



在您的情况下,您可以手动生成 ObjectIds 并从您的方法中返回它们(使用 ObjectId.GenerateNewId() )或返回整个对象,因为如果您使用 [BsonId] MongoDB 驱动程序将设置正确的 _id 值属性
public async Task<T> Create(T entity) where T:class
{
await Collection.InsertOneAsync(entity);
return entity;
}

并传递一个类型参数,如:
public class MyClass
{
[BsonId]
public ObjectId Id { get; set; }
//other properties
}

关于c# - 如何在 C# .Net 中使用 InsertOneAsync 将文档插入到 MongoDB 并返回相同的文档或其 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50068823/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com