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)}
}
}
])
真棒!我认为命令并不重要。 –
这就是他们称之为“管道”的原因。您需要将聚合视为一系列将按顺序进行的转换。您甚至可以多次投影和匹配数据。例如:你可以匹配,项目,组,项目再次,匹配,并最终排序。 –