我是mongodb的新手,无法理解find查询中的.sort()
与聚合框架中的$sort
之间的区别。
db.collection.find({}).limit(1).sort({ createdAt: 1 })
和
db.collection.aggregation([
{ $sort: { createdAt: 1 }},
{ $limit: 1 }
])
答案 0 :(得分:1)
对于find
,sort
和limit
游标方法的顺序无关紧要。排序将始终在限制之前进行(请参阅文档中的"Combine Cursor Methods")。
对于aggregate
,$sort
和$limit
阶段的顺序是有意义的,并确定哪个操作最先发生。
答案 1 :(得分:0)
聚合框架往往非常复杂。我建议任何试图掌握它的人先对他们脑海中的输出进行描绘(如果效果更好,则生成SQL查询)。
也就是说,区别只是性能:为了说明起见,它们是10而不是1。如果您阅读第一个查询,
db.collection.find({}).limit(10).sort({ createdAt: 1 })
将过滤10个项目并对其进行排序。第二种是对集合中的所有项目进行排序,然后将其过滤为10:
db.collection.aggregation([
{ $sort: { createdAt: 1 }},
{ $limit: 10 }
])
You can have a look at this course from mongouniversity.com 希望它能帮助您理解:)