以下是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);
上述陈述之间是否存在性能差异?
答案 0 :(得分:1)
关于mgo
包和MongoDB本身,我们可能会回答。
mgo
Query.Limit()
和Query.Sort()
方法仅在本地对Query
对象进行操作,一旦您设置了查询,就可以执行它,例如使用Query.One()
或Query.All()
。您调用方法进行设置的顺序不会存储也无关紧要。
引自MongoDB doc: Combine Cursor Methods:
db.bios.find().sort( { name: 1 } ).limit( 5 ) db.bios.find().limit( 5 ).sort( { name: 1 } )
这两个陈述是等价的;即,您链接
limit()
和sort()
方法的顺序并不重要。两个语句都返回前五个文档,由“名称”上的升序排序确定。
所以没有区别,它们是等价的,因此具有相同的性能。