【问题标题】:How to find the maximum memory utilized by one Document in MonogoDB Collection within the 30 days period?如何找到 30 天内 MongoDB Collection 中的一个 Document 使用的最大内存?
【发布时间】:2018-02-25 17:17:19
【问题描述】:

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

请帮我在mongo db控制台的日期范围内找到内存大小(MB)。

谢谢。

【问题讨论】:

    标签: mongodb mongodb-query


    【解决方案1】:

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

    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)
    

    【讨论】:

    • 感谢 Astro,该查询运行良好。能否请您分享一下,如何在 Mongodb 查询中添加日期格式...
    【解决方案2】:

    您可以使用db.col.stats() 或管道$collStatsstorageStats 来获取集合的大小

    使用聚合,您可以过滤一个月或日期范围的文档,将其写入新的临时集合,使用stats.size,您可以在bytes 中获取大小,除以1024*1024 以获取它在@ 987654327@

    收藏

    > 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") }
    

    聚合

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

    以字节为单位的大小

    > db.temp.stats().size
    320
    

    以 MB 为单位的大小

    > db.temp.stats().size/1024/1024
    0.00030517578125
    > 
    

    删除临时集合

    > db.temp.drop()
    true
    > 
    

    $collStatsstorageStats

    > var d = db.temp.aggregate({$collStats:{storageStats: {}}}).pretty()
    > d.forEach(d => print(d.storageStats.size/1024/1024))
    0.00030517578125
    > 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 2022-06-20
      • 1970-01-01
      • 1970-01-01
      • 2011-08-15
      相关资源
      最近更新 更多