我有一个基于散列的分片在mongodb集合中为一个键“userId”启用。是否有可能获得散列值为“userId”的所有文档,比如说,“abcd”和“cdef”?是否有可能在mongodb中查询哈希索引键的散列范围?
谢谢!我发现
我有一个基于散列的分片在mongodb集合中为一个键“userId”启用。是否有可能获得散列值为“userId”的所有文档,比如说,“abcd”和“cdef”?是否有可能在mongodb中查询哈希索引键的散列范围?
谢谢!我发现
一种方法是使用下面的查询:
db.mycollection.find({
"$and": [
{_id: {"$gt": -5012941854059245285}},
{_id : {"$lt": -4712634714892678072}}
]}).hint({_id: "hashed"})
其中长数字散列_id的值。 它适用于我,但它是这样做的最佳方式?我可以肯定它会与即将发布的mongodb版本一起工作吗?
你不需要$和,你可能不需要提示那里但是看起来不错,你可以做'db.mycollection.find({_ id:{$ gt:(),$ lt :()}})' – Sammaye
谢谢。你说得对,我不需要“$和”。但没有“$提示”我没有结果。我怀疑_id上的默认索引踢了。实际上,explain()证实了这个假设。我想知道是否使用hint()不是一个“hacky”解决方案,并且将是可移植的,并为即将发布的版本工作 – Vyacheslav
啊是的默认索引可能会接管,奇怪的是我不知道是否应该有一个JIRA。提示将始终得到支持,但当你必须回来修改这些查询时,它会让你的生活变得更加困难,如果可以处理,那么很好 – Sammaye
什么,你的意思是将内部散列值返回结果? – Sammaye
不一定(但会很好奇知道如何做到这一点)。我感兴趣的是以下内容:假设我有一系列MD5哈希表:A到B.我想要获取集合中的所有文档,其分片密钥的哈希值属于此范围 – Vyacheslav
,即如果文档A是散列哈希1,B到2,C到4,我有一个范围[0,3],我想获得文档A和B – Vyacheslav