MongoDB上的键名长度有限制吗?

时间:2018-11-27 20:14:33

标签: mongodb mongodb-query key-value

MongoDB密钥是否有任何字符长度限制?如何限制按键深度。

例如db.namespace.key_depth1.key_depth2.key_depth3 ... 我们可以拥有多少级钥匙?上面的串联键字符串的长度是否有限制? 其他键值数据库怎么样?

2 个答案:

答案 0 :(得分:1)

MongoDB有一个专门介绍its limits and thresholds

的页面

简而言之:

limit for the database name:
64 characters

limit for the database name + collection name (<database>.<collection>):
120 characters (including the dot separator)

(This is the closest answer to your question, since it limits the amount of keys)
nesting limit:
100

因此,由于您的问题与密钥的长度有关,因此会有所不同。如果您能够容纳数据库和集合名称的120个字符的限制,则唯一的限制是嵌套。 Mongo仅支持100嵌套层,这意味着它仅支持请求检索深度不超过100层的嵌套键的查询。我不认为查询本身是有限的,但是由于数据库不支持超过100个级别,因此查询根本没有意义。

因此,如果您的数据库名称确实很短,例如app,则您的集合名称限制为116个字符,因此查询可能如下所示:

db.<116 characters>.find({'1.2.3.4.5.6.7.8.(and so on until).100': true})

除此之外,密钥长度似乎没有固定的限制。

答案 1 :(得分:0)

我已经达到了这个限制,但最终还是通过使用记录的确定性哈希来生成小于阈值的ID来解决这个问题。您可以根据需要浏览带有过滤器的BSON树。但这并不是一个理想的解决方案...