1
在以下查詢中,我試圖找到上週進行的articles
集合中的條目,並按該文章的投票數排序。 $match
似乎不工作(也許我不知道如何使用它)。下面的查詢作品完美,所以它不是一個日期格式問題,使用日期聚合的Mongo查詢
db.articles.find(timestamp:{
'$lte':new Date(),
'$gte':new Date(ISODate().getTime()-7*1000*86400)}
})
但是這一次不取任何結果。如果沒有$match
它也會提取所需的結果(按投票計數排序的文章)。
db.articles.aggregate([
{
$project:{
_id:1,
numVotes:{$subtract:[{$size:"$votes.up"},{$size:"$votes.down"}]}}
},
{
$sort:{numVotes:-1}
},
{
$match:{
timestamp:{
'$lte':new Date(),
'$gte':new Date(ISODate().getTime()-7*1000*86400)}
}
}
])
真棒!我認爲命令並不重要。 –
這就是他們稱之爲「管道」的原因。您需要將聚合視爲一系列將按順序進行的轉換。您甚至可以多次投影和匹配數據。例如:你可以匹配,項目,組,項目再次,匹配,並最終排序。 –