個人的には、ユーザー/場所ごとに無制限のチェックイン数を設定できるため、主にユーザー/場所オブジェクトを小さく保つために、別のコレクションを使用します。チェックインコレクションのuser_id/timestamplとplace_id/timestampにインデックスを付けると、特定のユーザーまたは場所のクエリが効率的になります。別のコレクションを使用することの2つ目の利点は、MongoDBが大きくなりすぎたときに、ユーザーを移動したりオブジェクトを配置したりする必要がないことです。代わりに、チェックインコレクションに追加し続けるだけで、非常に効率的であるはずです(シャードごとに1秒あたり数十から数千の挿入)。
また、私はしないことにも言及する必要があります チェックインドキュメントにplace_idまたはuser_idのインデックスを付けることで同じパフォーマンス上の利点が得られるため、チェックインIDを場所またはユーザードキュメントのいずれかに保存します。