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

式ツリーはUpdateOneAsyncではサポートされていません

    Updateをビルドしようとすると問題が発生します 声明。ご存知かもしれませんが、-1 インデックスとして渡されるのは翻訳済み $定位置演算子 へ 。 ドキュメント と言う

    さらに、SingleOrDefaultを使用してフィルタリング条件を構築しようとしています .NET MongoDBドライバーは、これをMongoDBクエリ構文演算子に変換できません。

    それを修正する方法は?

    位置演算子を使用する代わりに、位置フィルター演算子を使用してみることができます 構文。

    var filter = Builders<NodeBoardModel>.Filter.Eq(f => f.Id, sId);
    var update = Builders<NodeBoardModel>.Update.Set("RemoteBoard.apps.$[app].objects.$[object].config_docs.$[configdoc].config_dt", dtUpdated);
    
    var arrayFilters = new List<ArrayFilterDefinition>();
    ArrayFilterDefinition<BsonDocument> appFilter = new BsonDocument("app.appname", new BsonDocument("$eq", sAppName));
    ArrayFilterDefinition<BsonDocument> objectFilter = new BsonDocument("object.name", new BsonDocument("$eq", sModelName));
    ArrayFilterDefinition<BsonDocument> configDocFilter = new BsonDocument("configdoc.config_id", new BsonDocument("$eq", iObjectId));
    
    arrayFilters.AddRange(new[] { appFilter, objectFilter, configDocFilter });
    
    var updateOptions = new UpdateOptions { ArrayFilters = arrayFilters };
    
    var res = Col.UpdateOne(filter, update, updateOptions);
    



    1. 予期しないシャットダウン後にmongodbがクラッシュする

    2. MongoDBで、ユーザーが関与する各会話の最後のメッセージを一覧表示する

    3. MongoDBの2つのフィールドの合計で並べ替える方法

    4. MongoDB $ sinh