在mongodb中使用按位运算进行查询

时间:2013-11-26 06:26:14

标签: mongodb mongodb-query bitwise-operators nosql

我需要在MongoDB中进行这样的查询:

db.collection.find( { $where : "(this.type & some_num) ^ some_num == 0"} ) 

Some_num是一个变量,它可以是任何整数。

我在here阅读了文档,该文档说Javascript查询会降低执行速度,也无法使用索引并需要进行表扫描。

上述查询的替代方法是什么?

3 个答案:

答案 0 :(得分:1)

在Mongo中最好的做法是将计划在字段中搜索的计算值存储在其中,然后在其上创建索引。否则,你几乎注定要扫描整个系列。

答案 1 :(得分:1)

$哪里必须慢。

比如$ bitand更好,但它还没有实现。见https://jira.mongodb.org/browse/SERVER-3518

可能的解决方案(对我而言)是使用数组。

答案 2 :(得分:0)

我很难理解您要通过此查询实现什么目标。构造this.type在JS中无效,因此我假设您正在尝试从当前文档中获取字段类型。然后出于某种原因你正在做按位&有一些变数。然后最后你用相同的变量对结果进行测试。

我要么解释这个错误,要么就是在做一些非常奇怪的事情。

无论如何,您可以使用bitwise xor operator in mognodb 2.6,或者您现在可以尝试实验版2.5。