gmdzxx 发表于 2018-10-26 06:45:03

mongodb sort limit和skip用法

  
  检索数据可以使用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   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"
  ]
  }
  ]

页: [1]
查看完整版本: mongodb sort limit和skip用法