如何在30天内找到MonogoDB Collection中一个Document使用的最大内存?

时间:2018-02-25 02:13:06

标签: mongodb mongodb-query

我在MonoDB Collection中有800k文档,一个文档({userid:'789736363828292'})有50k文档/记录。我希望在一个月或30天的间隔内找到该特定文档({userid:'789736363828292'})使用的内存。

请帮我在monogo db console的日期范围内找到以MB为单位的内存大小。

感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用SyntaxError: Unexpected token else in C:\Users\Adetona\Dropbox\meme.africa\views\pages\index.ejs while compiling ejs或管道elsedb.col.stats()一起获取集合的大小

通过聚合,您可以过滤月份或日期范围的文档,将其写入新的临时集合,$collStats您可以使用storageStats获取大小,将其除以stats.sizebytes

中获取它

集合

1024*1024

聚合

MB

以字节为单位的大小

> db.temp.drop()
true
> 
> db.abc.find()
{ "_id" : ObjectId("5a924393aa451c738766d20b"), "userid" : "789736363828292", "date" : ISODate("2018-01-01T00:00:00Z") }
{ "_id" : ObjectId("5a924393aa451c738766d20c"), "userid" : "789736363828292", "date" : ISODate("2018-01-02T00:00:00Z") }
{ "_id" : ObjectId("5a924393aa451c738766d20d"), "userid" : "789736363828292", "date" : ISODate("2018-01-03T00:00:00Z") }
{ "_id" : ObjectId("5a924393aa451c738766d20e"), "userid" : "789736363828292", "date" : ISODate("2018-01-04T00:00:00Z") }
{ "_id" : ObjectId("5a924393aa451c738766d20f"), "userid" : "789736363828292", "date" : ISODate("2018-01-05T00:00:00Z") }

大小以MB为单位

> db.abc.aggregate([
... {$match : {userid : '789736363828292', date : {$gt : new Date("2018-01-01")}, date : {$lt : new Date("2018-01-31")}}},
... {$out : "temp"}
... ])

drop temp collection

> db.temp.stats().size
320
带有> db.temp.stats().size/1024/1024 0.00030517578125 >

> db.temp.drop() true >

$collStats

答案 1 :(得分:0)

您可以使用查询找到所有此类文档的大小:

var size = 0
db.youCollection.find({userid : '789736363828292', date:{$lt:ISODate("2018-02-25T09:13:55.996Z"), $gt: ISODate("2018-01-25T09:13:55.996Z") }}).forEach(function(doc){ size =  size + Object.bsonsize(doc)  })
print(size)