Đố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}},
])