Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# mongo更新以忽略某些字段或向上插入_C#_Mongodb - Fatal编程技术网

C# mongo更新以忽略某些字段或向上插入

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

我将模型作为泛型类型传递给repo,因此我知道在upsert时忽略哪些字段。i、 e如果文档确实存在,则忽略这些字段;如果文档不存在,则插入文档

但是我看到的所有例子都提到了更新某些字段,例如

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