我是mongodb的新手,无法理解find查询中的.sort()和聚合框架中的$sort之间的区别。
db.collection.find({}).limit(1).sort({ createdAt: 1 })和
db.collection.aggregation([
{ $sort: { createdAt: 1 }},
{ $limit: 1 }
])发布于 2018-09-17 16:51:15
对于find,sort和limit游标方法的顺序无关紧要。排序总是在限制之前进行(请参阅文档中的“组合游标方法” )。
对于aggregate,$sort和$limit阶段的顺序是有意义的,并确定哪个操作首先发生。
发布于 2018-09-17 16:03:05
聚合框架往往非常复杂。我建议任何试图掌握它的人首先画出他们头中的输出(或者如果SQL查询工作得更好的话)。
也就是说,这只是性能的区别:为了解释,让我们假设它们是10而不是1。如果你读了第一个查询,
db.collection.find({}).limit(10).sort({ createdAt: 1 })将过滤10项并对它们进行排序。第二个步骤将对集合中的所有*项进行排序,然后将它们筛选为10:
db.collection.aggregation([
{ $sort: { createdAt: 1 }},
{ $limit: 10 }
])你可以从mongouniversity.com看一下这门课。希望它能帮助你理解:)
https://stackoverflow.com/questions/52371455
复制相似问题