Kueri tidak memberikan hasil apa pun karena $hour
operator hanya diterapkan dalam pipa agregasi, bukan find()
pertanyaan. Jadi dalam agregasi Anda, pipeline Anda memiliki dua langkah, $project
yang membuat bidang baru yang menampung bagian jam dan tahap berikutnya $match
yang kemudian menanyakan dokumen.
Dengan demikian, operasi agregasi akhir Anda akan menjadi seperti ini:
var pipeline = [
{
"$project": {
"hour": { "$hour": "$date" },
"date": 1
}
},
{
"$match": {
"hour": { "$gt": 4, "$lt": 8}
}
}
]
db.collection.aggregate(pipeline);