Javascript Mongo不同计数和位置

Javascript Mongo不同计数和位置,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我需要在Mongo中运行Distinct、Count和Where查询的帮助。 集合称为“TrackeEvents” 我需要的帮助是让mongo提供特定时间戳范围内的唯一用户计数,其中类型为“资产搜索” 我可以相对轻松地在SQL中实现这一点,但mongo感觉更复杂。这里的一些专家能帮我吗 User.find() .and([{'Type': 'Asset Search'}, $and: [ {'Timestam

我需要在Mongo中运行Distinct、Count和Where查询的帮助。 集合称为“TrackeEvents”

我需要的帮助是让mongo提供特定时间戳范围内的唯一用户计数,其中类型为“资产搜索”

我可以相对轻松地在SQL中实现这一点,但mongo感觉更复杂。这里的一些专家能帮我吗

User.find()
      .and([{'Type': 'Asset Search'},
               $and: [
                       {'Timestamp': {$gt: date1}},
                       {'Timestamp': {$lt: date2}}
                     ]
      .count()
      .exec(function (err, userCount) {
         //do stuff
      })
如果您想要2个日期之间的范围,您可能需要在and中添加第二个and条件。此时,通过此查询,yo将获得时间戳大于req.params.date的所有用户的计数,并键入“资产搜索”。时间戳字段真的是时间戳数组吗


//现在编辑它就像你希望的那样

你可以通过几种方式来实现这一点。第一种方法是使用聚合框架,该框架使用管道步骤来按 然后获取计数的用户字段:

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);
})
另一种方法是结合使用方法

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

不,只是我很懒,我现在更新,这对mongo是有效的,尽管运行find()和()失败了。当然是看这里,我还添加了我的答案
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);
});