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 } )
$redact
pipe道操作符通过逻辑expression式来过滤文档,这里使用$dayOfWeek
来查找周日值。
另一种情况是$where
expression式,但是因为这需要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。