【问题标题】:using mongo aggregation how to get records with count使用 mongo 聚合如何获取带有计数的记录
【发布时间】:2018-09-20 17:56:44
【问题描述】:

我正在尝试这个代码过去 24 小时的记录我得到了它,但我的要求是过去 24 小时的所有记录和记录总数

db.getCollection("COLLECTION_NAME").find({"createdAt":{$gt:new Date(Date.now() - 24*60*60 * 1000)}})

【问题讨论】:

    标签: javascript node.js mongodb mongoose aggregation


    【解决方案1】:

    如果您可以提供 2,3 个集合来测试此查询,则答案会更准确。无论如何,这就是您使用 aggregation 框架的方式。

    db.collection.aggregate(
    [
       {$match : {"createdAt":{$gt:new Date(Date.now() - 24*60*60 * 1000)}}},
        { "$group": {
            "_id": null, 
            "data": { "$push": "$$ROOT" }, 
            "count": { "$sum": 1 }
        }},
        { "$unwind": "$data" },
        {  "$project ": {"_id" : 0}}
    ]
    )
    

    【讨论】:

    • @George Baileyany 可能的相同查询,但只获取计数值并创建日期
    • 你最好看看$project
    • Baileyany { "$project ": {"createdAt" : 1}} 是否写入
    • { "$project ": {"createdAt" : 1, count : 1}}
    • 很高兴它有帮助。玩得开心
    【解决方案2】:

    集合中的总记录数是

    db.getCollection("myCollection").count()

    【讨论】:

    • @Hector Martinez .count 仅使用总记录数,但我的预期输出过去 24 小时记录任何建议我
    • 我需要过去 24 小时的输出记录和记录计数
    • collection.find({}).toArray(función(error,docs){ var count = docs.length;})
    • 或者使用光标对象,我认为它是collection.find().count()。显然在 find 你提出了你的查询。
    • 不使用函数的任何可能的写入聚合
    猜你喜欢
    • 1970-01-01
    • 2017-10-10
    • 2013-12-19
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    相关资源
    最近更新 更多