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

Meteor:配列要素の2つの異なる投影を公開します

    さまざまなアプローチを検討しました。この問題は、フィールドを慎重に選択し、サブスクリプションの順序を気にすることでケースバイケースで解決できますが、これらのソリューションは薄っぺらで、文書化されていない任意の条件に依存しています。

    唯一の実際の一般的なソリューションは仮想コレクションです 。最も単純なケースは、別のクライアント側のコレクション名でカーソルを公開することです。例:

    function publishVirtual(sub, name, cursor) {
      var observer = cursor.observeChanges({
        added  : function(id, fields) { sub.added(name, id, fields) },
        changed: function(id, fields) { sub.changed(name, id, fields) },
        removed: function(id)         { sub.remove(name, id) }
      })
    
      sub.onStop(function() {
        observer.stop() // important. Otherwise, it keeps running forever
      })
    }
    

    そして、パブリケーションでは、cursorを返す代わりに :

    var cursor = Users.find()
    publishVirtual(this, 'virtualUsers', cursor)
    this.ready()
    



    1. MongoDBを使用して本番環境に移行する方法-トップ10のヒント

    2. マングースで生のmongodb操作を行う方法は?

    3. upsertを使用してJavaでmongodbのcom.mongodb.MongoException$DuplicateKeyを取得する

    4. マングースは、複数のコレクションを1つの配列にマップする方法を集約します