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

C#ドライバーでMongoDB変更ストリーム「OperationType」を設定するにはどうすればよいですか?

    これは、コレクションWatchを更新して、ドキュメントの更新以外の「イベント」を取得するために使用したコードのサンプルです。

    IMongoDatabase sandboxDB = mongoClient.GetDatabase("Sandbox");
    IMongoCollection<BsonDocument> collection = sandboxDB.GetCollection<BsonDocument>("TestCollection");
    
    //Get the whole document instead of just the changed portion
    ChangeStreamOptions options = new ChangeStreamOptions() { FullDocument = ChangeStreamFullDocumentOption.UpdateLookup };
    
    //The operationType can be one of the following: insert, update, replace, delete, invalidate
    var pipeline = new EmptyPipelineDefinition<ChangeStreamDocument<BsonDocument>>().Match("{ operationType: { $in: [ 'replace', 'insert', 'update' ] } }");
    
    var changeStream = collection.Watch(pipeline, options).ToEnumerable().GetEnumerator();
    changeStream.MoveNext();    //Blocks until a document is replaced, inserted or updated in the TestCollection
    ChangeStreamDocument<BsonDocument> next = changeStream.Current;
    enumerator.Dispose();
    

    EmptyPiplineDefinition ... Match()引数は次のようにもなります:

    "{ $or: [ {operationType: 'replace' }, { operationType: 'insert' }, { operationType: 'update' } ] }"
    

    $ orコマンドを使用したい場合、または

    "{ operationType: /^[^d]/  }"
    

    そこに少し正規表現を投げます。この最後の1つは、文字「d」で始まらない限り、すべてのoperationTypeが必要だということです。




    1. MongoDB:配列インデックスで並べ替え

    2. Redisで特殊文字を含む数十万のキーを一括削​​除する方法

    3. mongodbのdb.collection.find()のリターンタイプとは何ですか

    4. MongoDBでは、コレクションが削除されると、インデックスも自動的に削除されますか?