从集合中检索最后一个文档时如何提高性能

时间:2017-11-22 20:24:41

标签: mongodb go mgo

以下是Limit()Sort() ...

之前的陈述
var result Candle
dao.c.Find(bson.M{"symbol": "USD"}).Limit(1).Sort("-time").One(&result);

...这是Limit()之后的Sort()的声明:

var result Candle
dao.c.Find(bson.M{"symbol": "USD"}).Sort("-time").Limit(1).One(&result);

上述陈述之间是否存在性能差异?

1 个答案:

答案 0 :(得分:1)

关于mgo包和MongoDB本身,我们可能会回答。

mgo

Query.Limit()Query.Sort()方法仅在本地对Query对象进行操作,一旦您设置了查询,就可以执行它,例如使用Query.One()Query.All()。您调用方法进行设置的顺序不会存储也无关紧要。

在MongoDB中

引自MongoDB doc: Combine Cursor Methods:

  

以下语句链接游标方法limit()sort()

db.bios.find().sort( { name: 1 } ).limit( 5 )
db.bios.find().limit( 5 ).sort( { name: 1 } )
     

这两个陈述是等价的;即,您链接limit()sort()方法的顺序并不重要。两个语句都返回前五个文档,由“名称”上的升序排序确定。

所以没有区别,它们是等价的,因此具有相同的性能。