select仅限周末的date

我试图查询我的mongoDB集合返回包含字段selectedDate文档,并检查datestring是否落在周末(星期六[6]或星期日[0])。

如何将字段的值传递给函数来检查它? data返回未定义,但我不确定如何将其正确存储在一个变种。

询问

 Entry. find({}). where('selectedDate').equals(thisWeekend(data)). exec(function(err, entries) { console.log('Events on a weeked' + ' ' + entries); }); 

function

 function thisWeekend(data) { var today = data.getDay(); if (today == 6 || today == 0) { console.log('WEEKEND BITCHES'); } else { console.log('Not the weekend'); } }; 

你不这样做,你这样做:

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

$redactpipe道操作符通过逻辑expression式来过滤文档,这里使用$dayOfWeek来查找周日值。

另一种情况是$whereexpression式,但是因为这需要JavaScript评估,所以它实际上比聚合操作慢得多。 你真的应该只在MongoDB 2.4或更早的版本中使用这个版本,它没有$redact

 Entry.find( { "$where": function() { var day = this.selectedDate.getUTCDay(); return ( day == 6 || day == 0 ); } }, function(err,results) { if (err) throw err; // Just weekends } ) 

你真的应该在这里调用.getUTCDay()这里的UTCdate。