我正在尝试查询我的mongoDB集合以返回包含字段selectedDate
的文档,并检查日期字符串是否属于周末(星期六[6]或星期日[0])。
如何将字段值传递给函数进行检查? data
返回undefined但我不确定如何正确地将它存储在var中。
查询
Entry.
find({}).
where('selectedDate').equals(thisWeekend(data)).
exec(function(err, entries) {
console.log('Events on a weeked' + ' ' + entries);
});
功能
function thisWeekend(data) {
var today = data.getDay();
if (today == 6 || today == 0) {
console.log('WEEKEND BITCHES');
} else {
console.log('Not the weekend');
}
};
答案 0 :(得分:2)
你不这样做,你这样做:
Entry.aggregate(
[
{ "$redact": {
"$cond": {
"if": {
"$or": [
{ "$eq": [ { "$dayOfWeek": "$selectedDate" }, 1 ] },
{ "$eq": [ { "$dayOfWeek": "$selectedDate" }, 7 ] }
]
},
"then": "$$KEEP",
"else": "$$PRUNE"
}
}}
],
function(err,results) {
if (err) throw err;
// results is weekend days only
}
)
$redact
管道运算符按逻辑表达式过滤文档,此处使用$dayOfWeek
查找工作日值。
备用案例是$where
表达式,但由于这需要进行JavaScript评估,因此它实际上比聚合操作运行得慢得多。你真的应该只使用没有$redact
的MongoDB 2.4或更早版本:
Entry.find(
{
"$where": function() {
var day = this.selectedDate.getUTCDay();
return ( day == 6 || day == 0 );
}
},
function(err,results) {
if (err) throw err;
// Just weekends
}
)
你应该在这里针对UTC的日期调用.getUTCDay()
。