C# mongo更新以忽略某些字段或向上插入
我将模型作为泛型类型传递给repo,因此我知道在upsert时忽略哪些字段。i、 e如果文档确实存在,则忽略这些字段;如果文档不存在,则插入文档 但是我看到的所有例子都提到了更新某些字段,例如C# mongo更新以忽略某些字段或向上插入,c#,mongodb,C#,Mongodb,我将模型作为泛型类型传递给repo,因此我知道在upsert时忽略哪些字段。i、 e如果文档确实存在,则忽略这些字段;如果文档不存在,则插入文档 但是我看到的所有例子都提到了更新某些字段,例如 var update = Builders<T>.Update.Set(m => m.IsDone, model.IsDone); 这里有一个shell代码: db.yourDb.update( <your_query>, { "$setOn
var update = Builders<T>.Update.Set(m => m.IsDone, model.IsDone);
这里有一个shell代码:
db.yourDb.update(
<your_query>,
{
"$setOnInsert": { "IsDone": <is_done_value> },
"$set": { "SomeField": "<some_field_value>" }
},
{
upsert: true
}
)
它们的关键点是,对于现有文档,只更新SomeField,但如果没有与查询匹配的文档,则插入一个新文档,并同时设置IsDone和SomeField。我相信您可以很容易地将此shell代码转换为C。它是一种泛型类型。我只能访问Id和IsDone。不是某个领域我用这个领域来表达这个想法。您可以使用$setOnInsert操作符来实现您的目标-这是关键点。看看这个:
db.yourDb.update(
<your_query>,
{
"$setOnInsert": { "IsDone": <is_done_value> },
"$set": { "SomeField": "<some_field_value>" }
},
{
upsert: true
}
)