Mongodb - 如何在 c# 中编写 Push Upsert

本文关键字:Push Upsert Mongodb | 更新日期: 2023-09-27 18:33:04

我想通过 c# 实现以下命令。我已经看到了Update.PushAll命令,但我不确定它是正确的方法。有什么建议吗?

db.students.update(
   { name: "joe" },
   { $push: { scores: { $each: [ 90, 92, 85 ] } } }
, upsert = true
)

Mongodb - 如何在 c# 中编写 Push Upsert

您可以使用

PushAllWrapped将分数数组添加到现有文档中:

var collection = db.GetCollection<Student>("students");
var query = Query<Product>.EQ(p => p.Name, "joe");
var push = Update<Student>.PushAllWrapped<int>(p => p.Scores, newScores);
collection.Update(query, push, UpdateFlags.Multi);

使用新语法,您可以使用PushEach实现:

var collection = db.GetCollection<Student>("students");
var filter = Builders<Students>.Filter.Eq("name", "joe");
var update = Builders<Students>.Update.PushEach<Score>(x=>x.Scores, scores);
await collection.UpdateOneAsync(filter, update);