【问题标题】:using mongoaggregation how to check every day data updated or not使用 mongoaggregation 如何检查每天的数据是否更新
【发布时间】:2018-09-23 10:40:18
【问题描述】:

我的 mongodb 数据集合数有如何通过数据插入一次检查所有集合 我正在尝试这段代码,我得到了一个收集数据,但是如何一次检查收集数据的数量。

db.collection.find({  
   $where:function () {  
      return Date.now() - this._id.getTimestamp() < (24 * 60 * 60 * 1000)
   }
})

【问题讨论】:

    标签: javascript mongodb mongoose aggregation-framework monodevelop


    【解决方案1】:

    更新 1:

    如果您想对 MongoDb 数据库中的所有集合应用查询,您可以发出如下查询:;

    db.getCollectionNames().forEach(function(n) { 
      print(n + ":" + db[n].count());
    });
    

    上面的查询将为您提供 MongoDB 数据库中所有集合的计数。

    原帖

    如果您的业务问题是关于知道每天插入了多少条记录,那么您可以使用 map reduce 框架使用存储在 _id 字段中的 ObjectId 来计算每天的记录数。此聚合将包含插入数据的所有日期。

    您必须有一个将 ID 转换为日期字符串的 JS 函数,以将其保存在 db.system.js 集合中,然后对相应的集合执行 mapReduce 调用。

    下面是代码:

    var dateFromObjectId = function (objectId) {
      var d = objectId.getTimestamp();
      return (d.getYear() + 1900) + "-" + (d.getMonth() + 1) + "-" + d.getDate();
    };
    
    db.system.js.save({ "_id": "dateFromObjectId", "value": dateFromObjectId });
    
    db.metrics.mapReduce(
        function() {
            emit(dateFromObjectId(this._id), 1);
        },
        function(key, values) {
            return Array.sum(values);
        },
        { "out": { "inline": 1 } }
    )
    

    这将打印如下内容:

      {
        "results": [{
                "_id": "2018-0-2",
                "value": 10628
            },
            {
                "_id": "2018-0-3",
                "value": 13835
            },
            {
                "_id": "2018-0-4",
                "value": 11624
            },
            {
                "_id": "2018-0-5",
                "value": 8983
            },
            {
                "_id": "2018-0-6",
                "value": 1076
            },
            {
                "_id": "2018-1-0",
                "value": 25771
            },
            {
                "_id": "2018-1-1",
                "value": 20498
            },
            {
                "_id": "2018-1-2",
                "value": 4703
            },
            {
                "_id": "2018-1-3",
                "value": 12738
            },
            {
                "_id": "2018-1-4",
                "value": 23840
            },
            {
                "_id": "2018-1-5",
                "value": 25888
            },
            {
                "_id": "2018-1-6",
                "value": 25377
            },
            {
                "_id": "2018-2-0",
                "value": 2183
            }
        ],
        "timeMillis": 5528,
        "counts": {
            "input": 599471,
            "emit": 599471,
            "reduce": 1941,
            "output": 63
        },
        "ok": 1
      }
    

    【讨论】:

    • 对不起,我不明白任何可能的写唯一聚合
    • @VARUN 对不起,我不明白你的意思。
    • @ gil.fernandes 我的 robomongo 数据库的集合数量在那里但是如何检查每天有多少个集合在每个集合中添加了新数据库...使用 mongo db 聚合如何检查所有集合一次
    • @VARUN 请查看我的更新答案。我试图解释如何一次向所有集合发起查询。
    猜你喜欢
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 2020-09-27
    • 2021-12-11
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2011-12-05
    相关资源
    最近更新 更多