我正在使用所讨论的自动增量字段here https://www.tutorialspoint.com/mongodb/mongodb_autoincrement_sequence.htm.
我可以在 Mongo Console 中执行这个示例,但是如何使用 c# 驱动程序实现这样的事情?
db.products.insert({
"_id":getNextSequenceValue("productid"),
"product_name":"Apple iPhone",
"category":"mobiles"
})
是否可以在写操作中指定一个函数?
我可以使用 Eval 调用此函数,但由于它已被弃用,我想找到一个不使用它的解决方案。
举例来说here http://www.lybecker.com/blog/2014/06/27/mongodb-auto-increment-or-sequence/:
var client = new MongoClient(connectionString);
MongoServer server = client.GetServer();
MongoDatabase db = server.GetDatabase("myDatabase");
var counterCol = db.GetCollection("counters")
var result = counterCol.FindAndModify(new FindAndModifyArgs()
{
Query = Query.EQ(d => d.Id, "orderId"),
Update = Update.Inc(d => d.Value, 1),
VersionReturned = FindAndModifyDocumentVersion.Modified,
Upsert = true, //Create if the document does not exists
});
使用新的 v2.x 驱动程序:
public class Sequence
{
[BsonId]
public ObjectId _Id { get; set; }
public string Name { get; set; }
public long Value { get; set; }
public void Insert(IMongoDatabase database)
{
var collection = database.GetCollection<Sequence>("sequence");
collection.InsertOne(this);
}
internal static long GetNextSequenceValue(string sequenceName, IMongoDatabase database)
{
var collection = database.GetCollection<Sequence>("sequence");
var filter = Builders<Sequence>.Filter.Eq(a => a.Name, sequenceName);
var update = Builders<Sequence>.Update.Inc(a => a.Value, 1);
var sequence = collection.FindOneAndUpdate(filter, update);
return sequence.Value;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)