-1

我有一个{s:1}关于集合 k 的索引,例如:

k中的数据喜欢:

{ 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 回答