-1

{s:1}次のようなコレクション kのインデックスがあります。

k like のデータ:

{ s:"aaa"} , {s:"bbb"} , {s:""}

{s:{$gt:""}}s の長さが 0 より大きいすべてのアイテムを見つけるために使用しても安全ですか?

4

2 に答える 2

2

次の事実に基づいて「安全」だと思います。

  • 空でない文字列は、辞書順で空の文字列より大きくなります。
  • インデックスは適切に機能するため、パフォーマンスは問題ないはずです。

インデックスが適切に機能するかどうかをテストするには、実行できます

db.collectionName.find({s: {$gt: ""}}).explain()

が表示されている場合"cursor" : "BtreeCursor s_1"は、インデックスが機能していることを意味します。

ただし、アプリケーション ロジックを変更して、s空のフィールドを削除することを検討しますか?

  • db.test.find({s: {$exists: false}}).hint({s: 1})このクエリで使用できます。より自然です$gt
  • MongoDB のスパース インデックスを使用すると、パフォーマンスが向上します。特に、ほとんどのデータが空の場合s
于 2012-12-18T03:04:53.580 に答える
1

おそらく $ne を使用する方が適切でしょう

つまり、「等しくない」

于 2012-12-18T03:00:28.780 に答える