gpt4 book ai didi

mongodb-.net-driver - 如何在不使用 eval 的情况下在 Mongo C# 驱动程序中使用自动增量字段?

转载 作者:行者123 更新时间:2023-12-03 15:57:25 25 4
gpt4 key购买 nike

我正在使用自增字段 here .

我可以在 Mongo 控制台中执行这个例子,但是我如何使用 c# 驱动程序实现这样的事情?

db.products.insert({
"_id":getNextSequenceValue("productid"),
"product_name":"Apple iPhone",
"category":"mobiles"
})

是否可以在写操作中指定一个函数?

我可以使用 Eval 调用这个函数,但由于它已被弃用,我想找到一个不使用它的解决方案。

最佳答案

如示例 here :

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;
}
}

关于mongodb-.net-driver - 如何在不使用 eval 的情况下在 Mongo C# 驱动程序中使用自动增量字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50394800/

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