如何在MongoDB中知道KB中嵌入文档的大小

时间:2016-06-20 20:49:06

标签: mongodb

我有一个带有嵌入式文档的集合,该集合是我的事务集合。就像

{ _id : ObjectId,
userId : ObjectId,
driverId : ObjectId,
carId : ObjectId,
trips : [{embedded data about each trip}]
} 

现在,每次特定用户驾驶员和汽车的行程都会增加行程的长度。现在,我想向老板建议的是打破这个系列。而不是拥有一个嵌入式文档数组,每个文档都有一个单独的行程细节。这就像展开整个文档一样。现在要说服他,我必须给他一些数字来支持我的观点,即如果添加了n个行程嵌入文档,那么文档将超过16MB大小,这对于mongoDB文档而言是最高的,并且在其中运行查询是耗时的但我不喜欢不知道1个嵌入式文档的大小,所以不能分割并给出一些数字。我如何计算一个文件的大小?无论我做什么,它都是正确的模式。正如在mongoDB中没有严格的规则,因此我的问题也有点自以为是。希望社区了解

1 个答案:

答案 0 :(得分:1)

您可以使用

计算文档的BSON大小
var myDocument = db.collection.findOne({_id:<some id>})
Object.bsonsize(myDocument);

结果是字节。有关详细信息,请参阅Object.bsonsize()

关于文档架构,它取决于您的应用程序用例。话虽如此,看起来您的文档在其当前设计中不会进行多次访问。另请参阅hybrid or bucket schema design以获取其他替代方案。