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

mongodb:cách tốt nhất để lấy các tài liệu cụ thể và sau đó là phần còn lại

Chà, không có nhiều chi tiết ở đây, nhưng tôi có thể đưa ra một trường hợp mẫu để xem xét. Hãy xem xét bộ tài liệu sau:

{ "user" : "fred", "color" : "black" }
{ "user" : "bill", "color" : "blue" }
{ "user" : "ted", "color" : "red" }
{ "user" : "ted", "color" : "black" }
{ "user" : "fred", "color" : "blue" }
{ "user" : "bill", "color" : "red" }
{ "user" : "bill", "color" : "orange" }
{ "user" : "fred", "color" : "orange" }
{ "user" : "ted", "color" : "orange" }
{ "user" : "ally", "color" : "orange" }
{ "user" : "alice", "color" : "orange" }
{ "user" : "alice", "color" : "red" }
{ "user" : "bill", "color" : "purple" }

Vì vậy, giả sử bạn muốn bong bóng các mục cho người dùng "lập hóa đơn" và "đưa" lên đầu kết quả của bạn, sau đó mọi thứ khác được sắp xếp bởi người dùng usercolor . Những gì bạn có thể làm là chạy các tài liệu thông qua $ dự án giai đoạn tổng hợp, như sau:

db.bubble.aggregate([

    // Project selects the fields to show, and we add a weight value
    {$project: {
        _id: 0,
        "user": 1,
        "color": 1,
        "weight": {$cond:[
            {$or: [
                {$eq: ["$user","bill"]},
                {$eq: ["$user","ted"]}
            ]},
            1,
            0
         ]}
     }},

    // Then sort the results with the `weight` first, then `user` and `color`
    {$sort: { weight: -1, user: 1, color: 1 }}

])

Vì vậy, những gì làm được là gán một giá trị có điều kiện cho weight dựa trên việc user được so khớp với một trong các giá trị bắt buộc. Các tài liệu không khớp chỉ được cung cấp một 0 giá trị.

Khi chúng tôi di chuyển đã sửa đổi này tài liệu về $ sort pha, weight mới key có thể được sử dụng để sắp xếp các kết quả để các tài liệu "có trọng số" ở trên cùng và mọi thứ khác sau đó sẽ theo sau.

Có một số điều bạn có thể làm với $ dự án trọng lượng theo cách này. Xem tham chiếu nhà điều hành để biết thêm thông tin:

http://docs.mongodb.org/manual/reference/operator/aggregation/




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lỗi khi chạy hình ảnh mongo - docker-entrypoint.sh:dòng 381

  2. Không chạy được Mongodb

  3. Tối ưu hóa truy vấn MongoDB

  4. Làm cách nào để tối ưu hóa truy vấn MongoDB với cả $ gt và $ lte?

  5. Phần mở rộng Mongo php sau khi cập nhật Heroku (trình soạn nhạc)