最后我得到了解决方案,但它必须重新考虑因素。在这里我得到今天和未来两天生日用户的详细信息。
pro = {:day => {:$dayOfMonth => '$dob'}, :month => {:$month => '$dob'}, :year => {:$year => '$dob'} }
today = Date.today
birth_dates = [today.day, (today+1.day).day, (today+2.days).day ]
birth_months = [today.month, (today+1.day).month, (today+2.days).month ].uniq
mat = {day: { '$in' => birth_dates } , month: { '$in' => birth_months } }
uids = User.collection.aggregate([{:$project => pro }, {:$match => mat }]).map{ |h| h["_id"] }
birth_users = User.find(uids, :order => :dob)
但问题是,在这里出生日期字段是可选的,所以它导致以下错误
失败,出现错误16006:异常:无法从BSON类型EOO转换为Date
任何一个建议请。
谢谢, Prasad
你会得到什么样的错误?你在mongoid吗? – xlembouras
难道你不能只通过一系列的生日吗?数据库中存储的生日是什么格式?在逻辑上:'生日> =今天和生日
WiredPrairie
**其他点**是你使用你的语言**本地日期对象**不是字符串。如果您的文档字段中有字符串,则应将其更改为日期。 –