Детонация / Dart. Получение данных между двумя датами в mongodb без использования ISODATE - PullRequest
0 голосов
/ 08 февраля 2020

Я использую понедельник go 3.6. У меня есть БД с полем с именем date типа Date, и я хочу вернуть все свои документы ($find) между двумя указанными c датами.

Проблема в том, что у меня есть чтобы составить эти запросы в Flutter / Dart, поэтому я не могу использовать ISODATE() для разбора моих дат, потому что (насколько мне известно) такой функции нет, хотя я пробовал .toIso8601String без удачи.

Все, что я пробую, приводит к пустому ответу (документы не возвращаются, но также нет ошибок).

То, что я пробовал:

{"date": {"$gte": "2018-08-23T09:34:32.000Z"}}

{"date": {"$gte": [{ "$dateFromString": { "dateString": "$date" }}, "2018-08-23T09:34:32.000Z"]}}

{"date": {"$gte": {"$date":"2018-08-23T09:34:32.000Z"}}}

{"date": {"$gte": {"$date":"2018-08-23 09:34:32.000"}}}

И многие другие.

Пожалуйста, кто-нибудь знает, как решить эту проблему?

Заранее спасибо

1 Ответ

0 голосов
/ 25 апреля 2020

Вы можете использовать пакет mongo_dart и просмотреть его хранилище (особенно метод testDateTime ). Тогда вы могли бы сделать что-то как:

var collectionName = 'users';
var collection = db.collection(collectionName);

await collection.insertAll([
    { 'name': 'John', 'birthday_date': DateTime.utc(2018, 8, 23, 12, 00, 00) },
    { 'name': 'Alice', 'birthday_date': DateTime.utc(2018, 8, 23, 10, 43, 24) },
    { 'name': 'Jim', 'birthday_date': DateTime.utc(2018, 8, 23, 8, 30, 0) }
]);

var result = await collection
    .find(where.gte('birthday_date', DateTime.utc(2018, 8, 23, 9, 34, 32)))
    .toList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...