最後我得到了解決方案,但它必須重新考慮因素。在這裏我得到今天和未來兩天生日用戶的詳細信息。
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
**其他點**是你使用你的語言**本地日期對象**不是字符串。如果您的文檔字段中有字符串,則應將其更改爲日期。 –