使用嵌入式文档进行_id索引时的MongoDB检查长度

时间:2015-10-27 20:03:50

标签: mongodb

我在我的应用程序中使用_id的嵌入式文档,例如:

> db.entities.findOne({}, {_id: 1})
{ "_id" : { "id" : "...", "type": "...", "servicePath" : "..." } }

有时,当子字段idtypeservicePath的总长度过大时,我在尝试插入文档时会出现此类错误:

Btree::insert: key too large to index, failing orion.entities.$_id_ 1086

这很好,因为MongoDB有一个index key limit of 1024 bytes_id是强制索引):

  

索引条目的总大小(可能包括取决于BSON类型的结构开销)必须小于1024字节。

但是,我想在我的程序中设置一个检查,以提前防止此错误。我的意思是,检查这种情况是否发生:

length(id) + length(type) + length(servicePath) + structural overhead > 1024

如何知道"结构性开销"在这种情况下?它是常量还是取决于特定的id / type / servicePath?

0 个答案:

没有答案