在mongodb中对查询使用按位操作

在mongodb中对查询使用按位操作,mongodb,mongodb-query,bitwise-operators,nosql,Mongodb,Mongodb Query,Bitwise Operators,Nosql,我需要在MongoDB中进行如下查询: db.collection.find( { $where : "(this.type & some_num) ^ some_num == 0"} ) Some_num是一个变量,可以是任何整数 我读了一篇文档,上面说Javascript查询会减慢执行速度,而且它不能使用索引,需要扫描表 上述查询的替代方案是什么?我很难理解您使用此查询究竟想要实现什么。构造this.type在JS中无效,因此我假设您正在尝试从当前文档中获取字段类型。然后出于某种

我需要在MongoDB中进行如下查询:

db.collection.find( { $where : "(this.type & some_num) ^ some_num == 0"} ) 
Some_num是一个变量,可以是任何整数

我读了一篇文档,上面说Javascript查询会减慢执行速度,而且它不能使用索引,需要扫描表


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

我很难理解您使用此查询究竟想要实现什么。构造this.type在JS中无效,因此我假设您正在尝试从当前文档中获取字段类型。然后出于某种原因,您正在按位执行&使用一些变量。最后用同一个变量对结果进行XOR运算

要么我把这个解释错了,要么你在做一些非常奇怪的事情


无论如何,您将可以使用2.6或现在就可以尝试实验版本2.5。

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

$where肯定很慢

像$bitand这样的东西会更好,但它还没有实现。看


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

您到底想对这个查询做什么?实际上,我需要使用位运算符进行查询。只允许对更新使用位操作。这正是我给你的答案。它将仅在2.6中提供。在2.4版本中,没有其他方法可以做到这一点。