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

Truy xuất các tài liệu con khớp với giá trị lớn nhất trong mảng

Cách tốt nhất tối ưu để làm điều này là trong MongoDB 3.2 hoặc mới hơn. Chúng tôi cần $ project tài liệu của chúng tôi và sử dụng $ bộ lọc toán tử để trả về một tập hợp con của mảng "topicInfo" phù hợp với điều kiện của chúng ta. Và kể từ MongoDB3.2, chúng tôi có thể sử dụng $ max trong $ project giai đoạn trong cond biểu thức ition và thực hiện một phép toán logic trên giá trị trả về.

Giai đoạn cuối cùng trong quy trình là $ match giai đoạn mà bạn lọc ra những tài liệu có "topicInfo" trống bằng cách sử dụng mã <> $ tồn tại toán tử truy vấn phần tử và ký hiệu dấu chấm để truy cập phần tử đầu tiên trong mảng. Điều này cũng làm giảm cả lượng dữ liệu được gửi qua dây cũng như thời gian và bộ nhớ được sử dụng để giải mã tài liệu ở phía máy khách.

db.collection.aggregate([
    { "$project": { 
        "topicInfo": { 
            "$filter": { 
                "input": "$topicInfo", 
                "as": "t", 
                "cond": { 
                    "$and": [ 
                        { "$eq": [ "$$t.topic", "topic2"] }, 
                        { "$eq": [ "$$t.time", { "$max": "$topicInfo.time" } ] }
                    ] 
                } 
            } 
        } 
    }},
    { "$match": { "topicInfo.0": { "$exists": true } } }
])


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sự cố với @Qualifier

  2. Cách thay thế chuỗi trong tất cả các tài liệu trong Mongo

  3. Cách đúng để chèn nhiều bản ghi vào Mongodb với Node.js

  4. Làm thế nào để bạn yêu cầu Mongo sắp xếp một bộ sưu tập trước khi giới hạn kết quả?

  5. Làm cách nào để chèn dữ liệu vào bộ sưu tập mongodb bằng trình điều khiển c # 2.0?