Pour la partie de 18 minutes, il ne s'agit pas vraiment de MongoDB, mais de JavaScript et de ce qui est disponible dans le shell mongo :
query = {
timestamp: { // 18 minutes ago (from now)
$gt: new Date(ISODate().getTime() - 1000 * 60 * 18)
}
}
Fonctionne dans le shell mongo, mais l'utilisation de pilotes Mongo pour d'autres langages serait vraiment différente.
Pour "projeter" sur un schéma plus petit avec à la fois des valeurs et des horodatages :
projection = {
_id: 0,
value: 1,
timestamp: 1,
}
Appliquer les deux :
db.mycol.find(query, projection).sort({timestamp: 1});
Eh bien, ce n'est toujours pas un "ensemble" car il pourrait y avoir des doublons. Pour vous en débarrasser, vous pouvez utiliser le $group
du cadre d'agrégation :
db.mycol.aggregate([
{$match: query},
{$group: {
_id: {
value: "$value",
timestamp: "$timestamp",
}
}},
{$project: {
value: "$_id.value",
timestamp: "$_id.timestamp",
}},
{$sort: {timestamp: 1}},
])