javascript - Mongodb 非重复计数和位置

标签 javascript node.js mongodb mongoose

我需要有关在 Mongo 中运行 Distinct、Count 和 Where 查询的帮助。 集合名为 'trackedevents'

{
    Type: 'Asset Search',
    User: 'ABC'
    Timestamp: '26/01/2015'
},
{
    Type: 'Asset Search',
    User: 'DEF'
    Timestamp : '27/01/2015'
}

我需要帮助的是让 mongo 在某个 Timestamp 范围内给我 CountUnique Users ,其中 类型' Assets 搜索'

我可以在 SQL 中相对容易地做到这一点,但 mongo 感觉更复杂。这里的一些专家可以帮助我解决这个问题吗。

最佳答案

您可以通过多种方式解决这个问题。第一种是使用聚合框架,它使用 $match $group 查询和分组文档的流水线步骤 用户字段然后获取计数:

var pipeline = [
    {
        "$match": {
            "Type": "Asset Search",
            "Timestamp": { "$gte": start, "$lte": end }
        }
    },
    {
        "$group": {
            "_id": "$User",
            "count": { "$sum": 1 }
        }
    }
];

TrackedEvent.aggregate(pipeline, function(err, result){
    if (err) { /* Handle error */ }
    console.log(result);
})

另一种方法是使用 distinct() 的组合 count() 方法

var query = {
        "Type": "Asset Search",
        "Timestamp": { "$gte": start, "$lte": end }
    };
TrackedEvent.distinct('User', query).count().exec(function (err, count) {
    console.log('The number of unique users is: %d', count);
});

关于javascript - Mongodb 非重复计数和位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35131908/

相关文章:

javascript - AngularJS ng-隐藏/显示标签/按钮如果长度(描述)< 20

javascript - 如何在 JavaScript 中捕获 .NET 异常?

mongodb - 重置 MongoDB oplog

javascript - 尝试从 NodeJS 后端的 API 获取数据时出现请求过多错误,但适用于 React 前端

javascript - 如何从 Node 请求创建 RxJs Observable

mongodb - 在MongoDB中如何查找属性是对象而不是数组的文档

node.js - 为什么 MongoDB/Mongoose 查找带有 null 或未定义参数的查询会返回所有文档?

javascript - 如何通过选择复选框获取行值

javascript - 如何调试单个 Javascript 文件?

javascript - Pouch 查询阻塞了 dom