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

C#-MongoDB-ネストされたドキュメント内の要素を更新します

    まず、MongoDBでこのコマンドを実行して、バージョン3.6.1の新機能を適用する必要がありますdb.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )

    その更新に必要なコードは次のとおりです。

    var filter = Builders<YOUR_CLASS>.Filter.Eq("_id", new ObjectId("5a55775cbd12982cc063c71a"));
    var update = Builders<YOUR_CLASS>.Update.Set("Cartons.$[i].Skus.$[j].ShippedQuantity", 50);
    
    var arrayFilters = new List<ArrayFilterDefinition>
    {
        new BsonDocumentArrayFilterDefinition<Setup>(new BsonDocument("i._id", new ObjectId("5a5575bcbd12982cc063b718"))),
        new BsonDocumentArrayFilterDefinition<Setup>(new BsonDocument("j._ID", new ObjectId("5a5575bcbd12982cc063b719")))
    };
    var updateOptions = new UpdateOptions { ArrayFilters = arrayFilters };
    var (updated, errorMessage) = await UpdateOneAsync(filter, update, updateOptions);
    

    さらに、MongoDBでこれらの設定を実行して最終的なクエリを確認し、RoboMongoまたはStudio3Tで手動で実行してデバッグすることができます。

    db.setProfilingLevel(2)   -> to view query logs under C:\data\log\mongod.log
    db.setLogLevel(5)         -> to view query logs under C:\data\log\mongod.log
    

    ログファイルで「UPDATE」クエリを探します。その後、ログ設定を0にリセットできます

    db.setProfilingLevel(0)
    db.setLogLevel(0)
    

    私は同じ問題を抱えていて、ここで同じ質問をしました。それを見てください。




    1. マングースに挿入された最新のサブドキュメントのIDを見つける

    2. jndi経由のMongoDb

    3. RedisTemplateを使用してRedisから設定値を取得する

    4. ServiceStack.Redisトランスポートを読み取れません-BasicRedisClientManager