【MongoDB】排序方法-sort()
排序,检索的数据按照指定key排序,1:asc,-1:desc
1 |
db.collection.find().sort({KEY:1}) |
1:测试数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
> db.t.find() { "_id" : ObjectId("5982b8b2c566b07b8733e787"), "a" : 5, "b" : 5, "c" : null } { "_id" : ObjectId("5982b8b2c566b07b8733e788"), "a" : 3, "b" : null, "c" : 8 } { "_id" : ObjectId("5982b8b2c566b07b8733e789"), "a" : null, "b" : 3, "c" : 9 } { "_id" : ObjectId("5982b8b2c566b07b8733e78a"), "a" : 1, "b" : 2, "c" : 3 } { "_id" : ObjectId("5982b8b2c566b07b8733e78b"), "a" : 2, "c" : 5 } { "_id" : ObjectId("5982b8b2c566b07b8733e78c"), "a" : 3, "b" : 2 } { "_id" : ObjectId("5982b8b2c566b07b8733e78d"), "a" : 4 } { "_id" : ObjectId("5982b8b2c566b07b8733e78e"), "b" : 2, "c" : 4 } { "_id" : ObjectId("5982b8b2c566b07b8733e78f"), "b" : 2 } { "_id" : ObjectId("5982b8b3c566b07b8733e790"), "c" : 6 } { "_id" : ObjectId("5982c220c566b07b8733e791"), "a" : "guan", "b" : "yu", "c" : "guanyunchang" } { "_id" : ObjectId("598339a60a70aac3cc00ef72"), "a" : 10000 } > |
2:按照a字段升序
1 2 3 4 5 6 7 8 9 10 11 12 |
# 通过下面的测试我们可以看到,null最小,字母最大,数字升序排列,这个跟关系型数据库有点儿区别,关系型(特指Oracle),null在排序时为最大 > db.t.find({ a: { $exists: true } } ).sort({a:1}) { "_id" : ObjectId("5982b8b2c566b07b8733e789"), "a" : null, "b" : 3, "c" : 9 } { "_id" : ObjectId("5982b8b2c566b07b8733e78a"), "a" : 1, "b" : 2, "c" : 3 } { "_id" : ObjectId("5982b8b2c566b07b8733e78b"), "a" : 2, "c" : 5 } { "_id" : ObjectId("5982b8b2c566b07b8733e788"), "a" : 3, "b" : null, "c" : 8 } { "_id" : ObjectId("5982b8b2c566b07b8733e78c"), "a" : 3, "b" : 2 } { "_id" : ObjectId("5982b8b2c566b07b8733e78d"), "a" : 4 } { "_id" : ObjectId("5982b8b2c566b07b8733e787"), "a" : 5, "b" : 5, "c" : null } { "_id" : ObjectId("598339a60a70aac3cc00ef72"), "a" : 10000 } { "_id" : ObjectId("5982c220c566b07b8733e791"), "a" : "guan", "b" : "yu", "c" : "guanyunchang" } > |
3:如果文档中没有a,那么会怎么排序呢?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# 有null,则最小,如果没有排序字段则排在其后,然后再按照a数值排序,字母等 > db.t.find().sort({a:1}) { "_id" : ObjectId("5982b8b2c566b07b8733e789"), "a" : null, "b" : 3, "c" : 9 } { "_id" : ObjectId("5982b8b2c566b07b8733e78e"), "b" : 2, "c" : 4 } { "_id" : ObjectId("5982b8b2c566b07b8733e78f"), "b" : 2 } { "_id" : ObjectId("5982b8b3c566b07b8733e790"), "c" : 6 } { "_id" : ObjectId("5982b8b2c566b07b8733e78a"), "a" : 1, "b" : 2, "c" : 3 } { "_id" : ObjectId("5982b8b2c566b07b8733e78b"), "a" : 2, "c" : 5 } { "_id" : ObjectId("5982b8b2c566b07b8733e788"), "a" : 3, "b" : null, "c" : 8 } { "_id" : ObjectId("5982b8b2c566b07b8733e78c"), "a" : 3, "b" : 2 } { "_id" : ObjectId("5982b8b2c566b07b8733e78d"), "a" : 4 } { "_id" : ObjectId("5982b8b2c566b07b8733e787"), "a" : 5, "b" : 5, "c" : null } { "_id" : ObjectId("598339a60a70aac3cc00ef72"), "a" : 10000 } { "_id" : ObjectId("5982c220c566b07b8733e791"), "a" : "guan", "b" : "yu", "c" : "guanyunchang" } > |