18分間の部分では、これは実際にはMongoDBについてではなく、JavaScriptとmongoシェルで利用できるものについてです:
query = {
timestamp: { // 18 minutes ago (from now)
$gt: new Date(ISODate().getTime() - 1000 * 60 * 18)
}
}
mongoシェルで動作しますが、他の言語でMongoドライバーを使用することは実際には異なります。
値とタイムスタンプの両方を使用して、より小さなスキーマに「投影」するには:
projection = {
_id: 0,
value: 1,
timestamp: 1,
}
両方を適用する:
db.mycol.find(query, projection).sort({timestamp: 1});
まあ、重複があるかもしれないので、それはまだ「セット」ではありません。それらを取り除くには、$group
を使用できます 集約フレームワークから:
db.mycol.aggregate([
{$match: query},
{$group: {
_id: {
value: "$value",
timestamp: "$timestamp",
}
}},
{$project: {
value: "$_id.value",
timestamp: "$_id.timestamp",
}},
{$sort: {timestamp: 1}},
])