Meteorでは、私はMongoDBを使ってオブジェクトのコレクションを格納します。約500kのドキュメントが挿入されています。
私はObjets.find({ "_id": { "$in": objIds } });
を使用します。objIdsは_idの配列です。これは、配列の長さが1000のときにうまく動作しますが、13145_idsで試してみると、アプリケーションは応答を停止します。
明らかに_idフィールドにインデックスがありますが、この検索はおそらく起こりませんが、これが正常な動作であるかどうかはわかりません。 $ in演算子の最大長はありますか?ドキュメントで見つけられませんでした。ここで
は私の流星で公開します:
Meteor.publish('objetsByIds', function objetsByIdsPublication(objIds) {
return Objets.find({ "_id": { "$in": objIds } });
})
MongoDBのクエリドキュメントを含む、ドキュメントのサイズには16メガバイトの制限があります。 13,145 ObjectIdはそれぞれ12バイトであるため、この制限を超えてはなりません。どのように結果を反復していますか? 13,145すべてをメモリに読み込んでいる場合は、メモリ制限が発生している可能性があります。 – jstell
これはMeteorサブスクリプションで使用されるため、結果を返すだけです。私はおそらくメモリが不足していますが、私はコンソールのMeteorから例外を取得しないと驚いています。 –
参加をしようとしていますか?クライアント(minimongo)またはサーバー上で?あなたの方法/出版物を見せてもらえますか? –