2

mongos インスタンスで count() 関数の奇妙な動作があります。タグ オブジェクトを配列に変換する必要があったため、1 時間以上前に投稿コレクションの約 8,000 項目を更新しました。

今、mongosに次のクエリを実行すると:

mongos> db.posts.find({blog: 'blog1', tags: {$type: 3}}).count()
4139
mongos> db.posts.findOne({blog: 'blog1', tags: {$type: 3}})
null

RS が同期されている場合でも、count() が 4139 個のアイテムを表示し、findOne が null 値を返すのはなぜですか?

編集: 4 つの RS があります (すべて同期)。また、すべての PRIMARIES で同じカウント クエリを実行しましたが、結果は常に 0 です。mongos をカウントした場合にのみ、結果は 4139 になります。

4

2 に答える 2

-1

count() と limit() の動作がおかしい場合は、データベースを修復するのが最善の方法かもしれません。Mongo シェルに移動し、次のコマンドを入力します。

db.repairDatabase()

詳細については、MongoDB docsを確認してください。

于 2013-10-09T15:16:16.130 に答える