MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Truy vấn MongoDB, sắp xếp rồi lấy tài liệu thứ n cho nhóm

Đây là cách bạn sẽ làm điều đó bằng cách sử dụng quy trình tổng hợp 4 giai đoạn

  1. Sắp xếp theo quốc gia và theo xếp hạng theo cách bạn đã làm
  2. Nhóm theo quốc gia và đẩy tất cả thông tin chi tiết về người chơi vào một mảng
  3. Cái này là cái móc sắt. Sử dụng project với $arrayElemAt để lấy ith người chơi được xếp hạng cho từng quốc gia tương ứng
  4. Sử dụng lại dự án để cung cấp cho bạn đối tượng ở định dạng mong muốn

    db.getCollection('players').aggregate(
    {
        $sort: {country: 1, rating: -1}
    },
    {
        $group:   {
            _id: "$country", 
            players: {$push: {name: "$name", rating: "$rating", event: "$event"}}
        }
    },
    {
        $project: {
            player: {$arrayElemAt: ["$players", iTH_RATING]}
        } 
    },
    {
        $project: {
            name: "$player.name",
            rating: "$player.rating",
            event: "$player.event"
            }
    })
    

Xem lấy màn hình bên dưới để biết 2nd Highest Rated Players . Vì đây là những 0-indexed , iTH_RATING biến trong truy vấn được thay thế bằng 1. Để có được những người chơi được xếp hạng cao nhất, hãy thay thế bằng 0, v.v.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách chuyển đổi trường chuỗi được phân tách bằng dấu phẩy thành mảng trong mongodb

  2. MongoDB 2.4.1 hiện đã có trên ScaleGrid

  3. MongoDB $ đặt không cập nhật bản ghi

  4. Tên bộ sưu tập số Loại bỏ

  5. Mongoose kéo ObjectId từ mảng