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

Truy vấn để nhận dữ liệu X phút cuối cùng với Mongodb

Đối với phần 18 phút, đó không thực sự là về MongoDB, mà là về JavaScript và những gì có sẵn trong mongo shell:

query = {
    timestamp: { // 18 minutes ago (from now)
        $gt: new Date(ISODate().getTime() - 1000 * 60 * 18)
    }
}

Hoạt động trong trình bao mongo, nhưng việc sử dụng trình điều khiển Mongo cho các ngôn ngữ khác sẽ thực sự khác.

Để "chiếu" trên một giản đồ nhỏ hơn có cả giá trị và dấu thời gian:

projection = {
    _id: 0,
    value: 1,
    timestamp: 1,
}

Áp dụng cả hai:

db.mycol.find(query, projection).sort({timestamp: 1});

Chà, đó vẫn chưa phải là "tập hợp" vì có thể có các bản sao. Để loại bỏ chúng, bạn có thể sử dụng $group từ khung tổng hợp:

db.mycol.aggregate([
    {$match: query},
    {$group: {
        _id: {
            value: "$value",
            timestamp: "$timestamp",
        }
    }},
    {$project: {
        value: "$_id.value",
        timestamp: "$_id.timestamp",
    }},
    {$sort: {timestamp: 1}},
])


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Quy trình công việc dữ liệu lớn sử dụng gấu trúc

  2. Không thể đọc DBname.system.indexes trên cụm Atlas bằng mongobee sau khi được kết nối

  3. Làm thế nào để chỉ trả lại giá trị trong MongoDB

  4. Mongoose Model.find không phải là một hàm?

  5. Không thể tạo chỉ mục trong mongodb, khóa quá lớn để lập chỉ mục