MongoDB 索引的行为与限制
要特别注意以下的索引行为限制:
-
一个 collection 的索引不能超过 64 个;
-
索引键值不能超过1024个字节;(<key, value>, value 的长度不能超过1024字节)
一个 Document 不能索引键值长度超过了最大长度的 fields
要查询键值太大而无法编制索引的文档,可以使用类似于以下内容的命令:
db.myCollection.find({<key>: <value too large to index>}).hint({$natural: 1})
-
索引的名字,包括命名空间必须少于128个字符;
-
索引有存储要求,在一定程度上它会影响 insert/update 操作;
-
创建索引支持查询或者其它操作,但一定不要保留 MongoDB 实例不会用到的索引;
-
复合索引(Compound indexes)不支持对复合域的真子集域索引;
以下内容是创建复合索引的命令:
db.products.ensureIndex( { "item": 1, "location": 1, "stock": 1 } )
上述查询,支持对 item 域的索引;支持 item, location域的索引;
不支持仅对 location 域的索引;
不支持仅对 stock域的索引;
不支持仅对 item,stock 域的索引;
不支持仅对 location,stock域的索引;
-
2d geospatial queries 不支持 $or 操作。