.find().sort().skip().limit()中.sort().skip().limit()的各种排列组合。
当sort,skip,limit一起使用时,无论其位置变化, 总是先sort再skip,最后limit

如果要改变执行顺序,用aggregate

aggregate有管道流的性质,

db.memos.aggregate(
{ $match: { status: 'P' } },
{ $limit:5},
{ $skip:2},
{ $sort: { age : -1 } }

aggregate的用法

>>> from pymongo import MongoClient
>>> db = MongoClient().aggregation_example
>>> result = db.things.insert_many([{"x": 1, "tags": ["dog", "cat"]},
...                                 {"x": 2, "tags": ["cat"]},
...                                 {"x": 2, "tags": ["mouse", "cat", "dog"]},
...                                 {"x": 3, "tags": []}])
>>> result.inserted_ids
[ObjectId('...'), ObjectId('...'), ObjectId('...'), ObjectId('...')]
>>> from bson.son import SON
>>> pipeline = [
...     {"$unwind": "$tags"},
...     {"$group": {"_id": "$tags", "count": {"$sum": 1}}},
...     {"$sort": SON([("count", -1), ("_id", -1)])}
... ]
>>> import pprint
>>> pprint.pprint(list(db.things.aggregate(pipeline)))
[{u'_id': u'cat', u'count': 3},
 {u'_id': u'dog', u'count': 2},
 {u'_id': u'mouse', u'count': 1}]

document:

"_id" : ObjectId("57506d74c469888f0d631be6"), "LOC" : "User001", "COL" : [ "date" : "25/03/2016", "number" : "Folio009", "amount" : 100 "date" : "25/04/2016", "number" : "Folio010", "amount" : 100

I assume you have a valid connection to MongoDB in Python.
The following code snippet will return a MongoDB cursor in result.

pipeline = [
    {"$unwind": "$COL"},
    {"$group": {"_id": "$LOC", "sum": {"$sum": "$COL.amount"}}}
cursor = collection.aggregate(pipeline)

Now you can convert cursor to list

result = list(cursor)

and if you print result’s value, you’ll get exactly the same result as in your Shell query.

[{u'sum': 200.0, u'_id': u'User001'}]

优化:
https://docs.mongodb.com/manual/reference/operator/aggregation/sort/
https://blog.csdn.net/suyu_yuan/article/details/51766483

执行顺序: https://blog.csdn.net/thewindkee/article/details/54670750优化: https://docs.mongodb.com/manual/reference/operator/aggregation/sort/ https://blog.csdn.net/suyu_yuan/article/details/51766483...
SORT AGGREGATE做为sort的option之一比较特殊,他并不做sort SORT AGGREGATE作用于所有的data set上,用于aggregate function,例如sum, count, avg, min, max select max(x) from test; Execution -----------------
转自:http://docs.mongoing.com/manual-zh/core/aggregation-pipeline-optimization.html 1、db.memos.find({}) 查询memos文档结果; 2、db.memos.aggregate({$skip:3}) 跳过查询结果前三行; 3、db.memos.aggregate({$limit:3})
Oracle10g: create table t_count as select * from dba_objects; create index t_count_i on t_count(object_id): select count(*) from t_count; select count(object_id) from t_count; select co
文章目录一。概念二。集合示例准备三。各个操作符的用法1.$lookup2.$match3.$unwind4.$project5.$limit6.$skip7.$group8.$sort 管道的概念 管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。 MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。 MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算
最近在学习mongoDB的使用,本文来介绍一下其中aggregate的具体使用 先来看一个分组的例子,本例中$group是一个管道操作符,获得的结果可以接着输出到下一个管道,而内部的$sum是一个表达式操作符。 用$group 举个例子
文章目录hash内存hashexternal hashsort内存sortexternal sortshufflehash shufflesort shuffleaggregatehash aggregatesort aggregate分布式aggregatejoinnested loop joinhash joinsort merge join分布式join总结 hash算法是指对于key计算出hash值,基于hash值识别相同key,从而进行归类、聚合等操作。 内存hash 类似于JAVA H