c# - 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();
您的帮助将不胜感激。