可以在mongodb中查询散列索引键的散列范围吗?

可以在mongodb中查询散列索引键的散列范围吗?,mongodb,sharding,mongodb-query,querying,Mongodb,Sharding,Mongodb Query,Querying,我为mongodb集合中的密钥“userId”启用了基于哈希的切分。是否可以获取其哈希值“userId”介于“abcd”和“cdef”之间的所有文档 谢谢 我发现的一种方法是使用以下查询: db.mycollection.find({ "$and": [ {_id: {"$gt": -5012941854059245285}}, {_id : {"$lt": -4712634714892678072}} ]}).hint({_id: "hashed"}) 其中长数字是_id的散列值。

我为mongodb集合中的密钥“userId”启用了基于哈希的切分。是否可以获取其哈希值“userId”介于“abcd”和“cdef”之间的所有文档


谢谢

我发现的一种方法是使用以下查询:

db.mycollection.find({
"$and": [
  {_id: {"$gt": -5012941854059245285}}, 
  {_id : {"$lt": -4712634714892678072}}
]}).hint({_id: "hashed"})
其中长数字是_id的散列值。
这对我来说很有效,但这是最好的方法吗?我能确定它是否能与即将发布的mongodb一起使用吗?

什么,你的意思是在结果中返回内部哈希值吗?不一定(但我想知道如何操作)。我感兴趣的是以下内容:假设我有一个MD5哈希和的范围:a到B。我想获取集合中所有切分键的哈希值属于这个范围的文档,也就是说,如果文档a哈希到哈希1,B到2,C到4,并且我有一个范围[0,3],我想得到一个文档,你不需要$,你可能也不需要那里的提示,但是是的,看起来不错,你可以做
db.mycollection.find({u id:{$gt:(),$lt:()})
谢谢。你说得对,我不需要“$and”。但是没有“$hint”我就没有结果。我怀疑_id上的默认索引起作用了。实际上,explain()证实了这个假设。我想知道使用hint()是否不是一个“黑客”解决方案,是否可以移植并为即将发布的版本工作。是的,默认索引可能会接管,奇怪的是,我想知道是否应该有一个JIRA。提示将始终得到支持,但当您必须返回并修改这些查询时,提示会使您作为开发人员的生活更加困难,如果您能够处理这些问题,那么提示就很好了。实际上,我更喜欢没有提示的解决方案()因为我担心查询优化器将来可能不会尊重这个提示……这个解决方案使用了不受支持的行为,并与MongoDB 2.6发生冲突。有关如何施工的指导,请参见以下内容: