Mongodb 这个查询安全吗?
我在集合k上有一个索引Mongodb 这个查询安全吗?,mongodb,Mongodb,我在集合k上有一个索引{s:1},如: k类数据: {s:“aaa”}, {s:“bbb”}, {s:} 使用{s:{$gt:“}}查找s长度大于0的每个项目是否安全 使用$ne可能更合适 即“不等于”基于以下事实,我认为它是“安全的”: 任何非空字符串都大于按字典顺序排列的空字符串 索引工作正常,因此性能应该正常 要测试索引是否正常工作,可以执行 db.collectionName.find({s: {$gt: ""}}).explain() 当看到“游标”:“btreecursor
{s:1}
,如:
k类数据:
{s:“aaa”},
{s:“bbb”},
{s:}
使用
{s:{$gt:“}}
查找s长度大于0的每个项目是否安全 使用$ne可能更合适
即“不等于”基于以下事实,我认为它是“安全的”:
- 任何非空字符串都大于按字典顺序排列的空字符串
- 索引工作正常,因此性能应该正常李>
db.collectionName.find({s: {$gt: ""}}).explain()
当看到“游标”:“btreecursors_1”
时,表示索引工作
但您是否考虑在空时修改应用程序逻辑并删除<代码> s <代码>字段?
可用于此查询。它比db.test.find({s:{$exists:false}})。提示({s:1})
更自然李>$gt
- 您可以从性能改进中获益。尤其是当您的大多数数据都是空的
时李>s
{s:{$exists:true}}
不会使用索引,我不确定mongodb在创建基于字符串的索引时是否使用了字典顺序。关于$exists
的更新需要额外提示。有人能告诉我mongodb如何构建基于字符串的索引,字符串的顺序是什么吗?是的,但您可以将其与空检查结合起来,如{s:{$ne:,$ne:null}
。