Meteor歴5年で今更感があるのですが。
Meteorといえばリアルタイムアプリがターゲットのウェブプラットフォームです。
クライアントとサーバーのDBの同期やリアクティブなレンダリングはとても重宝しています。
さて、MeteorのDBのクライアント-サーバ同期の単位は、コレクションのドキュメントのトップのフィールドです。
(これを確認するには、クライアント側でDDPの通信をモニタしてみるといいです)
例えばチャットアプリを考えてみましょう。
大きく分けて3つのデータ構造が考えられると思います。
- チャット1つずつをそれぞれドキュメントにする
- スレッドをドキュメントにして、チャットID(番号)をトップのフィールドにしてチャットをスレッドのドキュメントに追加していく
- ルームをドキュメントにして、chatsフィールドを配列にしてチャットを追加していく
先に説明した通り、同期の単位はコレクションのドキュメントのトップのフィールドなので、1と2はチャット毎にDDPで同期が取られますが、3はチャットが追加されるたびにchatsフィールドの内容すべてをDDPで送ることになります。
パフォーマンスに大きな影響があるかと思いますので、ご注意ください。