检索数据可以使用sort()方法来对数据进行排序,指定排序字段,并使用1或-1来指定排序方式是升序或降序。类似于SQL语句中的order by语句。

可以使用limit()方法来读取指定数量的数据,还可以使用skip()方法来跳过指定数量的数据。对分页性能上面效率非常高。

1. 语法

>db.COLLECTION_NAME.find().sort({KEY:1})

>db.COLLECTION_NAME.find().limit(NUMBER)

>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

2. sort()

> db.mediaCollection.find().sort({"Tracklist":1}).toArray() [        {                "_id" : ObjectId("5353462f93efef02c962da71"),                "Type" : "Book",                "Title" : "Definitive Guide to <a href="http://www.ttlsa.com/mongodb" title="mongodb"target="_blank">MongoDB</a>, the",                "ISBN" : "987-1-4302-3051-9",                "Publisher" : "Apress",                "Author" : [                        "Membrey, Peter",                        "Plugge, Eelco",                        "Hawkins, Tim"                ]        },        {                "_id" : ObjectId("5353462f93efef02c962da72"),                "Type" : "CD",                "Artist" : "Nirvana",                "Title" : "Nevermind"        },        {                "_id" : ObjectId("5353463193efef02c962da73"),                "Type" : "CD",                "Artist" : "Nirvana",                "Title" : "Nevermind",                "Tracklist" : [                        {                                "Track" : "1",                                "Title" : "Smells like teen spirit",                                "Length" : "5:02"                        },                        {                                "Track" : "2",                                "Title" : "In Bloom",                                "Length" : "4:15"                        }                ]        } ] > db.mediaCollection.find().toArray() [        {                "_id" : ObjectId("5353462f93efef02c962da71"),                "Type" : "Book",                "Title" : "Definitive Guide to MongoDB, the",                "ISBN" : "987-1-4302-3051-9",                "Publisher" : "Apress",                "Author" : [                        "Membrey, Peter",                        "Plugge, Eelco",                        "Hawkins, Tim"                ]        },        {                "_id" : ObjectId("5353462f93efef02c962da72"),                "Type" : "CD",                "Artist" : "Nirvana",                "Title" : "Nevermind"        },        {                "_id" : ObjectId("5353463193efef02c962da73"),                "Type" : "CD",                "Artist" : "Nirvana",                "Title" : "Nevermind",                "Tracklist" : [                        {                                "Track" : "1",                                "Title" : "Smells like teen spirit",                                "Length" : "5:02"                        },                        {                                "Track" : "2",                                "Title" : "In Bloom",                                "Length" : "4:15"                        }                ]        } ]

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

> db.mediaCollection.find().sort({"Tracklist":1}).toArray()

[

        {

                "_id" : ObjectId("5353462f93efef02c962da71"),

                "Type" : "Book",

                "Title" : "Definitive Guide to MongoDB, the",

                "ISBN" : "987-1-4302-3051-9",

                "Publisher" : "Apress",

                "Author" : [

                        "Membrey, Peter",

                        "Plugge, Eelco",

                        "Hawkins, Tim"

                ]

        },

        {

                "_id" : ObjectId("5353462f93efef02c962da72"),

                "Type" : "CD",

                "Artist" : "Nirvana",

                "Title" : "Nevermind"

        },

        {

                "_id" : ObjectId("5353463193efef02c962da73"),

                "Type" : "CD",

                "Artist" : "Nirvana",

                "Title" : "Nevermind",

                "Tracklist" : [

                        {

                                "Track" : "1",

                                "Title" : "Smells like teen spirit",

                                "Length" : "5:02"

                        },

                        {

                                "Track" : "2",

                                "Title" : "In Bloom",

                                "Length" : "4:15"

                        }

                ]

        }

]

> db.mediaCollection.find().toArray()

[

        {

                "_id" : ObjectId("5353462f93efef02c962da71"),

                "Type" : "Book",

                "Title" : "Definitive Guide to MongoDB, the",

                "ISBN" : "987-1-4302-3051-9",

                "Publisher" : "Apress",

                "Author" : [

                        "Membrey, Peter",

                        "Plugge, Eelco",

                        "Hawkins, Tim"

                ]

        },

        {

                "_id" : ObjectId("5353462f93efef02c962da72"),

                "Type" : "CD",

                "Artist" : "Nirvana",

                "Title" : "Nevermind"

        },

        {

                "_id" : ObjectId("5353463193efef02c962da73"),

                "Type" : "CD",

                "Artist" : "Nirvana",

                "Title" : "Nevermind",

                "Tracklist" : [

                        {

                                "Track" : "1",

                                "Title" : "Smells like teen spirit",

                                "Length" : "5:02"

                        },

                        {

                                "Track" : "2",

                                "Title" : "In Bloom",

                                "Length" : "4:15"

                        }

                ]

        }

]

注意:如果指定的排序键不存在,那么数值将以它们插入的顺序升序返回。

3. limit()

该函数用来指定返回结果的最大数量。

> db.mediaCollection.find().limit(1).toArray() [        {                "_id" : ObjectId("5353462f93efef02c962da71"),                "Type" : "Book",                "Title" : "Definitive Guide to MongoDB, the",                "ISBN" : "987-1-4302-3051-9",                "Publisher" : "Apress",                "Author" : [                        "Membrey, Peter",                        "Plugge, Eelco",                        "Hawkins, Tim"                ]        } ]

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

> db.mediaCollection.find().limit(1).toArray()

[

        {

                "_id" : ObjectId("5353462f93efef02c962da71"),

                "Type" : "Book",

                "Title" : "Definitive Guide to MongoDB, the",

                "ISBN" : "987-1-4302-3051-9",

                "Publisher" : "Apress",

                "Author" : [

                        "Membrey, Peter",

                        "Plugge, Eelco",

                        "Hawkins, Tim"

                ]

        }

]

4. skip()

跳过前面两条数据。

> db.mediaCollection.find().skip(2).toArray() [        {                "_id" : ObjectId("5353463193efef02c962da73"),                "Type" : "CD",                "Artist" : "Nirvana",                "Title" : "Nevermind",                "Tracklist" : [                        {                                "Track" : "1",                                "Title" : "Smells like teen spirit",                                "Length" : "5:02"                        },                        {                                "Track" : "2",                                "Title" : "In Bloom",                                "Length" : "4:15"                        }                ]        } ]

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

> db.mediaCollection.find().skip(2).toArray()

[

        {

                "_id" : ObjectId("5353463193efef02c962da73"),

                "Type" : "CD",

                "Artist" : "Nirvana",

                "Title" : "Nevermind",

                "Tracklist" : [

                        {

                                "Track" : "1",

                                "Title" : "Smells like teen spirit",

                                "Length" : "5:02"

                        },

                        {

                                "Track" : "2",

                                "Title" : "In Bloom",

                                "Length" : "4:15"

                        }

                ]

        }

]

5. 组合使用

> db.mediaCollection.find().sort({"Tracklist":1}).toArray() [        {                "_id" : ObjectId("5353462f93efef02c962da71"),                "Type" : "Book",                "Title" : "Definitive Guide to MongoDB, the",                "ISBN" : "987-1-4302-3051-9",                "Publisher" : "Apress",                "Author" : [                        "Membrey, Peter",                        "Plugge, Eelco",                        "Hawkins, Tim"                ]        },        {                "_id" : ObjectId("5353462f93efef02c962da72"),                "Type" : "CD",                "Artist" : "Nirvana",                "Title" : "Nevermind"        },        {                "_id" : ObjectId("5353463193efef02c962da73"),                "Type" : "CD",                "Artist" : "Nirvana",                "Title" : "Nevermind",                "Tracklist" : [                        {                                "Track" : "1",                                "Title" : "Smells like teen spirit",                                "Length" : "5:02"                        },                        {                                "Track" : "2",                                "Title" : "In Bloom",                                "Length" : "4:15"                        }                ]        } ] > db.mediaCollection.find().sort({"Tracklist":1}).limit(1).skip(1).toArray() [        {                "_id" : ObjectId("5353462f93efef02c962da72"),                "Type" : "CD",                "Artist" : "Nirvana",                "Title" : "Nevermind"        } ]

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

> db.mediaCollection.find().sort({"Tracklist":1}).toArray()

[

        {

                "_id" : ObjectId("5353462f93efef02c962da71"),

                "Type" : "Book",

                "Title" : "Definitive Guide to MongoDB, the",

                "ISBN" : "987-1-4302-3051-9",

                "Publisher" : "Apress",

                "Author" : [

                        "Membrey, Peter",

                        "Plugge, Eelco",

                        "Hawkins, Tim"

                ]

        },

        {

                "_id" : ObjectId("5353462f93efef02c962da72"),

                "Type" : "CD",

                "Artist" : "Nirvana",

                "Title" : "Nevermind"

        },

        {

                "_id" : ObjectId("5353463193efef02c962da73"),

                "Type" : "CD",

                "Artist" : "Nirvana",

                "Title" : "Nevermind",

                "Tracklist" : [

                        {

                                "Track" : "1",

                                "Title" : "Smells like teen spirit",

                                "Length" : "5:02"

                        },

                        {

                                "Track" : "2",

                                "Title" : "In Bloom",

                                "Length" : "4:15"

                        }

                ]

        }

]

> db.mediaCollection.find().sort({"Tracklist":1}).limit(1).skip(1).toArray()

[

        {

                "_id" : ObjectId("5353462f93efef02c962da72"),

                "Type" : "CD",

                "Artist" : "Nirvana",

                "Title" : "Nevermind"

        }

]

6. 自然顺序$natural

> db.mediaCollection.find().sort( { $natural: -1 } ).toArray() [        {                "_id" : ObjectId("5353463193efef02c962da73"),                "Type" : "CD",                "Artist" : "Nirvana",                "Title" : "Nevermind",                "Tracklist" : [                        {                                "Track" : "1",                                "Title" : "Smells like teen spirit",                                "Length" : "5:02"                        },                        {                                "Track" : "2",                                "Title" : "In Bloom",                                "Length" : "4:15"                        }                ]        },        {                "_id" : ObjectId("5353462f93efef02c962da72"),                "Type" : "CD",                "Artist" : "Nirvana",                "Title" : "Nevermind"        },        {                "_id" : ObjectId("5353462f93efef02c962da71"),                "Type" : "Book",                "Title" : "Definitive Guide to MongoDB, the",                "ISBN" : "987-1-4302-3051-9",                "Publisher" : "Apress",                "Author" : [                        "Membrey, Peter",                        "Plugge, Eelco",                        "Hawkins, Tim"                ]        } ]

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

> db.mediaCollection.find().sort( { $natural: -1 } ).toArray()

[

        {

                "_id" : ObjectId("5353463193efef02c962da73"),

                "Type" : "CD",

                "Artist" : "Nirvana",

                "Title" : "Nevermind",

                "Tracklist" : [

                        {

                                "Track" : "1",

                                "Title" : "Smells like teen spirit",

                                "Length" : "5:02"

                        },

                        {

                                "Track" : "2",

                                "Title" : "In Bloom",

                                "Length" : "4:15"

                        }

                ]

        },

        {

                "_id" : ObjectId("5353462f93efef02c962da72"),

                "Type" : "CD",

                "Artist" : "Nirvana",

                "Title" : "Nevermind"

        },

        {

                "_id" : ObjectId("5353462f93efef02c962da71"),

                "Type" : "Book",

                "Title" : "Definitive Guide to MongoDB, the",

                "ISBN" : "987-1-4302-3051-9",

                "Publisher" : "Apress",

                "Author" : [

                        "Membrey, Peter",

                        "Plugge, Eelco",

                        "Hawkins, Tim"

                ]

        }

]