天天看點

Mongodb從0到1系列四: Limit與Skip方法、排序、索引7. Limit與Skip方法8. 排序

Mongodb從0到1系列一:下載下傳、安裝、啟動、停止

Mongodb從0到1系列二:資料庫與集合操作文檔、增删改查

Mongodb從0到1系列三: 條件查詢、大小寫

7. Limit與Skip方法

MongoDB的Limit方法與Skip方法,limit()方法接受一個數字參數,該參數指定從MongoDB中讀取的記錄條數。skip()方法來跳過指定數量的資料,skip方法同樣接受一個數字參數作為跳過的記錄條數。

文法

假設我們在Student集合中插入了以下文檔

> use test1

> db.student.remove({})

> db.student.insert({name:'Zhaoliu',age:25,course:'Chinese'})

> db.student.insert({name:'Zhangsan',age:22,course:'Chinese'})

> db.student.insert({name:'Lisi',age:23,course:'computer'})

> db.student.insert({name:'Liuneng',age:26,course:'English'})

> db.student.insert({name:'Wangwu',age:24,course:'Chinese'})

隻顯示兩條記錄:

MongoDB Enterprise > db.student.find().limit(2).pretty()

{
        "_id" : ObjectId("5972b31100c6e9a07498d9fd"),
        "name" : "Zhaoliu",
        "age" : 25,
        "course" : "Chinese"
}
{
        "_id" : ObjectId("5972b31100c6e9a07498d9fe"),
        "name" : "Zhangsan",
        "age" : 22,
        "course" : "Chinese"
}
           

跳過前三條記錄:

MongoDB Enterprise > db.student.find().pretty().skip(3)

{
        "_id" : ObjectId("5972b31100c6e9a07498da00"),
        "name" : "Liuneng",
        "age" : 26,
        "course" : "English"
}
{
        "_id" : ObjectId("5972b31100c6e9a07498da01"),
        "name" : "Wangwu",
        "age" : 24,
        "course" : "Chinese"
}
           

隻顯示第4條記錄

MongoDB Enterprise > db.student.find().pretty().limit(1).skip(3)

{
        "_id" : ObjectId("5958f8b088c2ec197b6391e4"),
        "name" : "Liuneng",
        "age" : 26,
        "course" : "English"
}
           

或者

MongoDB Enterprise >   db.student.find().pretty().skip(3).limit(1)

{
        "_id" : ObjectId("5972b31100c6e9a07498da00"),
        "name" : "Liuneng",
        "age" : 26,
        "course" : "English"
}
           

注意這裡的limit(N)意思是顯示記錄條數的上限為N,并非顯示前N條記錄。

8. 排序

在MongoDB中使用使用sort()方法對資料進行排序,sort()方法可以通過參數指定排序的字段,并使用 1 和 -1 來指定排序的方式,其中 1 為升序排列,而-1是用于降序排列。

文法為:db.COLLECTION_NAME.find().sort({KEY:1})

将Student集合中的文檔按照年齡升序排列

MongoDB Enterprise > db.student.find().sort({age:1})

{ "_id" : ObjectId("5972b31100c6e9a07498d9fe"), "name" : "Zhangsan", "age" : 22, "course" : "Chinese" }
{ "_id" : ObjectId("5972b31100c6e9a07498d9ff"), "name" : "Lisi", "age" : 23, "course" : "computer" }
{ "_id" : ObjectId("5972b31100c6e9a07498da01"), "name" : "Wangwu", "age" : 24, "course" : "Chinese" }
{ "_id" : ObjectId("5972b31100c6e9a07498d9fd"), "name" : "Zhaoliu", "age" : 25, "course" : "Chinese" }
{ "_id" : ObjectId("5972b31100c6e9a07498da00"), "name" : "Liuneng", "age" : 26, "course" : "English" }
           

将Student集合中的文檔按照性名降序排列

MongoDB Enterprise > db.student.find().sort({name:-1})

{ "_id" : ObjectId("5972b31100c6e9a07498d9fd"), "name" : "Zhaoliu", "age" : 25, "course" : "Chinese" }
{ "_id" : ObjectId("5972b31100c6e9a07498d9fe"), "name" : "Zhangsan", "age" : 22, "course" : "Chinese" }
{ "_id" : ObjectId("5972b31100c6e9a07498da01"), "name" : "Wangwu", "age" : 24, "course" : "Chinese" }
{ "_id" : ObjectId("5972b31100c6e9a07498da00"), "name" : "Liuneng", "age" : 26, "course" : "English" }
{ "_id" : ObjectId("5972b31100c6e9a07498d9ff"), "name" : "Lisi", "age" : 23, "course" : "computer" }
           

9. 索引

MongoDB使用 ensureIndex() 方法來建立索引。ensureIndex()方法基本文法格式如下所示:db.COLLECTION_NAME.ensureIndex({KEY:1}),文法中 Key 值為你要建立的索引字段,1為指定按升序建立索引,如果你想按降序來建立索引指定為-1即可。

在student的name列上建立索引

MongoDB Enterprise > db.student.ensureIndex({"name":1})

{

        "createdCollectionAutomatically" : false,

        "numIndexesBefore" : 1,

        "numIndexesAfter" : 2,

        "ok" : 1

}

另外,建立索引的時候可以加一些參數,比如background表示是否在背景建立,unique表示建立的索引是否唯一,name表示索引的名子

在student的age列上建立降序索引,索引名子指定為age_idx

MongoDB Enterprise > db.student.ensureIndex({"age":-1},{name:"age_idx"})

{

        "createdCollectionAutomatically" : false,

        "numIndexesBefore" : 2,

        "numIndexesAfter" : 3,

        "ok" : 1

}

檢視student集合上的索引:

MongoDB Enterprise > db.student.getIndexes()

[
        {
                "v" : 2,
                "key" : {
                        "_id" : 1
                },
                "name" : "_id_",
                "ns" : "test2.student"
        },
        {
                "v" : 2,
                "key" : {
                        "name" : 1
                },
                "name" : "name_1",
                "ns" : "test2.student"
        },
        {
                "v" : 2,
                "key" : {
                        "age" : -1
                },
                "name" : "age_idx",
                "ns" : "test2.student"
        }
]