J'ai un schemea qui crée des documents en utilisant la structure suivante:agrégation MongoDB, trouvant dans un tableau de valeurs
{
"_id" : "2014-07-16:52TEST",
"date" : ISODate("2014-07-16T23:52:59.811Z"),
"name" : "TEST"
"values" : [
[
1405471921000,
0.737121
],
[
1405471922000,
0.737142
],
[
1405471923000,
0.737142
],
[
1405471924000,
0.737142
]
]
}
Dans les valeurs, le premier indice est un horodatage. Ce que j'essaie de faire est d'interroger un horodatage spécifique pour trouver la valeur la plus proche ($gte
).
J'ai essayé la requête globale suivante:
[
{ "$match": {
"values": {
"$elemMatch": { "0": {"$gte": 1405471923000} }
},
"name" : 'TEST'
}},
{ "$project" : {
"name" : 1,
"values" : 1
}},
{ "$unwind": "$values" },
{ "$match": { "values.0": { "$gte": 1405471923000 } } },
{ "$limit" : 1 },
{ "$sort": { "values.0": -1 } },
{ "$group": {
"_id": "$name",
"values": { "$push": "$values" },
}}
]
Cela semble fonctionner, mais il ne tire pas la valeur la plus proche. Il semble tirer quelque chose de plus grand ou égal à et le genre ne semble pas être appliqué, de sorte qu'il va tirer un horodatage qui est loin dans le futur.
Toutes les suggestions seraient super!
Merci