我有一个名为 UserSubmissions 的集合,其中包含以下文档:
总的来说,这个集合存储了所有登录的用户提交的提交内容以及每个提交的状态。
我想计算用户最多提出6个问题的连续答案数。
这就是我在Meteor App中尝试的内容:
var total = UserSubmissions.find({UserID: userid}).count();
var count = 0;
for ( var i = 0 ; i < 6 ; i++ ) {
if ( UserSubmissions.find({UserID: userid}, { sort: {Date: -1}}).fetch()[abs(total - 1 - i)].Status == "Correct") {
count++;
}
}
尝试使用辅助函数,但它不起作用。不知道我哪里错了。 Mongo可能有一个内置的查询功能,我不知道。
答案 0 :(得分:0)
为了使它更简洁,试试这个:
var total = UserSubmissions.find(
{UserID: userid, Status: "Correct"},
{limit:5}
).count();
答案 1 :(得分:0)
连续计算某些东西是不合理的#34;没有订单。我想你想用Date
?如果是这样的话,我会编写一个函数来计算连续答案的当前条纹(使用shell表示法,因为我不熟悉Meteor)
function streak(userid) {
var lastWrong = db.UserSubmissions.find({ "UserID" : userid, "Status" : "Wrong" }).sort({ "Date" : -1 }).limit(1).toArray()
if (lastWrong.length === 0) // user has never been wrong!
return db.UserSubmissions.count({ "UserID" : userid })
var lastWrongDate = lastWrong[0].Date
return db.UserSubmissions.count({ "UserID" : userid, "Date" : { "$gt" : lastWrongDate } })
}