如何转换 MongoDB 查询并使用索引

Posted

技术标签:

【中文标题】如何转换 MongoDB 查询并使用索引【英文标题】:How to cast a MongoDB query and use Index 【发布时间】:2014-12-27 19:42:08 【问题描述】:

我有一个 sql 查询,我想将其转换为 MongoDB 并仍然使用索引。这是sql查询

SELECT * FROM "Data1" WHERE age > Cast('12' as int)

根据SO这个回答,上面的查询可以转换为:

db.test.find("this.age > 12")

但是,使用此语法不会使用任何索引。我想知道 MonoDB 是否已解决此问题。

【问题讨论】:

这应该可以工作:db.test.find(age: $gt: '12') 【参考方案1】:

您需要使用$gt 运算符来使用索引。

db.test.find(age:$gt:12)

字段age 应该被索引。

我想知道这个问题是否已针对 MongoDB 修复。

仍然无法实现。

文档说,如果你需要使用java脚本进行评估和选择文档,你需要使用$where操作符。但它不会使用索引。

db.test.find(  $where: "this.age>12"  );

来自文档,

$where 评估 javascript,不能利用索引;

因此,只要查询条件被评估为 Java 脚本,它就永远不能使用索引。

【讨论】:

怎么做:count =12; db.test.find(age:$gt: count)

以上是关于如何转换 MongoDB 查询并使用索引的主要内容,如果未能解决你的问题,请参考以下文章

mongo索引

MongoDB高效查询之索引机制

将 MongoDB 查询转换为雪花

MongoDB 的功能

为啥MongoDB适合大数据的存储

MongoDB 索引