Javascript Mongo不同计数和位置
我需要在Mongo中运行Distinct、Count和Where查询的帮助。 集合称为“TrackeEvents” 我需要的帮助是让mongo提供特定时间戳范围内的唯一用户计数,其中类型为“资产搜索” 我可以相对轻松地在SQL中实现这一点,但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
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);
});