Я создал базу данных датчиков, которая по сути хранит значения Double в паре с метками времени Date.
Я попытался запросить их с помощью правильного синтаксиса, но он возвращает только [].
API сделан в MongoDB Stitch, и я звоню через Почтальон.
Если я заставлю свой API вернуть все документы, он будет работать нормально.
Это пример документа в моей базе данных:
_id:5caf026c8bc97c06677967d6
time:"2019-04-11T09:01:32Z"
val:102.85
topic:"pressure/stjernelaks/sensor0"
isotime:2019-04-11T09:01:32.000+00:00
Edit:
Вот как выглядит документ при возврате в виде массива через API:
"_id": {
"$oid": "5caf18078bc97c066779724a"
},
"time": "2019-04-11T10:33:43Z",
"val": {
"$numberDouble": "102.88"
},
"topic": "pressure/stjernelaks/sensor0",
"isotime": {
"$date": {
"$numberLong": "1554978823000"
}
}
},
И вот мой запрос:
https://eu-west-1.aws.webhooks.mongodb-stitch.com/api/client/v2.0/app/semapres-charts-dsioa/service/get-chart-data/incoming_webhook/get-all-between?arg2=1554970464&arg1=1554980464
В качестве альтернативы я использовал аргументы 2019-04-11T07: 01: 32.000 + 00: 00 и 2019-04-11T09: 01: 32.000 + 00: 00. Это тот же формат, что и в базе данных.
Он создается LocalDateTime с DateTimeFormatter.ISO_DATE_TIME в Java, и мой MongoDB говорит, что тип поля данных - Дата, а не Строка.
Это мой webhook во всей своей простоте:
exports = function(payload) {
const {arg1, arg2} = payload.query;
const contentTypes = payload.headers["application/json"];
const body = payload.body;
const mongodb = context.services.get("mongodb-atlas");
const mycollection = mongodb.db("pressure").collection("stjernelaks");
return mycollection.find({
isotime: {
'$gte': new Date(arg1),
'$lt': new Date(arg2)
}
}).toArray();
};
Я не могу понять, почему он не возвращает никаких документов, поэтому любая помощь будет полезна.
Обновление:
Я попытался изменить свой запрос, чтобы вернуть документы с "val" внутри диапазона. Также была такая же проблема. Как и со строкой времени и даты, я могу использовать свой webhook и жестко закодировать аргументы, и это работает. И я могу заставить мой webhook вернуть аргументы, он читает их мне без происшествий. Но он просто не вернет никаких документов, когда будет делать запрос на основе моих аргументов! Это странно!