sql >> データベース >  >> NoSQL >> MongoDB

MongoDbのアップサート辞書

    更新/挿入するすべてのプロパティを調べて、プロパティごとに実行できます:

    UpdateDefinition<Site> upsert = null;
    if (properties.Any())
    {
        var firstprop = properties.First();
        upsert = Builders<Site>.Update.Set(nameof(Site.Properties) + "." + firstprop.Key, 
                                   firstprop.Value);
    
        foreach (var updateVal in properties.Skip(1))
        {
            upsert = upsert.Set(nameof(Site.Properties) + "." + updateVal.Key, 
                                              updateVal.Value);
        }
    
        collection.UpdateOne(r => r.Id == "YourId", upsert, 
                                                   new UpdateOptions { IsUpsert = true });
    }
    

    複数の更新を含む以前のバージョンの回答:

    foreach (var updateVal in properties)
    {
        collection.UpdateOne(r => r.Id == "YourId", 
            Builders<Site>.Update.Set( nameof(Site.Properties)+ "." + updateVal.Key, 
                                       updateVal.Value), 
                                       new UpdateOptions { IsUpsert = true});
    }
    

    新しいキー/値を追加するか、既存のキー/値を更新するだけで、何も削除されないことに注意してください。




    1. Springデータとmongodb-@Transactional内のSpringを使用した単純なロールバック

    2. 特別な条件でのMongoDBでのドキュメントのグループ化

    3. pymongoのデフォルトのbatchSizeは何ですか?

    4. MongoDB + Node.js:日付を正しく挿入できません