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

各ドキュメントに追加のフィールドを含むリアクティブなパブリケーションを作成します

    データベースクエリの一部であっても、フィールドをプライベートに保つのは比較的簡単です。 self.addedの最後の引数 はクライアントに渡されるオブジェクトであるため、クライアントに送信するフィールドを削除/変更/削除できます。

    これがあなたのフィドルの修正版です。これはあなたが求めていることをするはずです。 (正直なところ、observeChangesの後に何かが連鎖している理由はわかりません あなたのフィドルで機能するので、私はあなたを誤解しているかもしれませんが、あなたの質問の残りを見ると、これはそれであるはずです。間違えたらごめんなさい。)

    var self = this;
    
    // Modify the document we are sending to the client.
    function filter(doc) {
      var length = doc.item.length;
    
      // White list the fields you want to publish.
      var docToPublish = _.pick(doc, [
          'someOtherField'
      ]);
    
      // Add your custom fields.
      docToPublish.itemLength = length;
    
      return docToPublish;                        
    }
    
    var handle = myCollection.find({}, {fields: {item:1, someOtherField:1}})
                // Use observe since it gives us the the old and new document when something is changing. 
                // If this becomes a performance issue then consider using observeChanges, 
                // but its usually a lot simpler to use observe in cases like this.
                .observe({
                    added: function(doc) {
                        self.added("myCollection", doc._id, filter(doc));
                    },
                    changed: function(newDocument, oldDocument)
                        // When the item count is changing, send update to client.
                        if (newDocument.item.length !== oldDocument.item.length)
                            self.changed("myCollection", newDocument._id, filter(newDocument));
                    },
                    removed: function(doc) {
                        self.removed("myCollection", doc._id);                    
                    });
    
    self.ready();
    
    self.onStop(function () {
      handle.stop();
    });
    


    1. 時間ベースの値を並べ替えるためのRedisデータ構造設計

    2. 春のデータを使用してMongoRepositoryでクエリアノテーションを使用しながらクエリを表示する方法

    3. MongoDB Aggregation:前の行の合計から現在の合計を計算する

    4. ElasticCacheRedisキャッシュノードに接続するJavaクライアント