首页 > 解决方案 > MongoDB C# 驱动程序:在插入期间设置连续项目编号

问题描述

在 C# 项目中使用 2.10 版中的 mongodbdriver。

我的文档类型如下:

{ 
    "_id" : ObjectId("609720e0fc341e5879c91779"), 
    "number" : "1"
}

目前在创建新对象时,我手动设置了数字:

var item = new Item();

item.number = getCollection<Item>().CountDocuments(new MongoDB.Bson.BsonDocument()) + 1;
await getCollection<Item>().InsertOneAsync(item);

当多台机器同时执行时,这有时会导致不同的文档具有相同的编号,因为计数可以CountDocuments在插入之间发生变化。

{ 
    "_id" : ObjectId("609720e0fc341e5879c91781"), 
    "number" : "2"
}
{ 
    "_id" : ObjectId("609720e0fc341e5879c91783"), 
    "number" : "2"
}

有没有办法在这样的原子命令中插入这个数字?

await getCollection<Item>().InsertOneAsync(item).OnInsertSet(item.number = db.collection<Items>.getCount();

您的帮助将不胜感激。

标签: c#mongodbmongodb-querymongodb-.net-drivermongodb-csharp-2.0

解决方案


推荐阅读