MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Filtr daty mangusty

W zapytaniu użyj rzeczywistego obiektu daty, a nie ciągu, jak to robisz obecnie. Ponieważ mongo przechowuje daty opakowane w ISODate helper i bazowy BSON (format danych do przechowywania używany przez mongo natywnie) ma dedykowany typ daty UTC datetime, który jest 64-bitową (a więc 8-bajtową) liczbą całkowitą ze znakiem, oznaczającą milisekundy od epoki czasu uniksowego, twoje zapytanie nie zwraca niczego jako będzie porównywać pola daty w mongo z ciągiem w formacie ISO.

Więc upuść toISOString() konwersja i użyj obiektu daty:

if (data.date) {
    const date = new Date();
    const dateRange = data.date.slice(0, -1); // strip the "d" from "7d"
    date.setDate(date.getDate() - dateRange);
    query.start = { $lte: date };
    console.log(query);
}

Call.find(query, function (error, docs) {
    if (error) callback(error, null);
    callback(null, docs);    
});

Co więcej, możesz użyć momentjs wtyczka, która ma bardzo intuicyjny i łatwy interfejs API do manipulacji datami. Jedną z metod, których możesz użyć, jest subtract() funkcja do pobrania obiektu daty n liczba dni temu:

if (data.date) {    
    const dateRange = data.date.slice(0, -1); // strip the "d" from "7d"
    const date = moment().subtract(dateRange, "days");
    query.start = { $lte: date };
    console.log(query);
}

Call.find(query, function (error, docs) {
    if (error) callback(error, null);
    callback(null, docs);    
});



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak przenieść tailable kursor z awaitdata do końca, aby po prostu otrzymywać nowe aktualizacje

  2. Pierwsze kroki ze sterownikiem MongoDB Go

  3. Wysyłaj wiele obiektów JSON jednocześnie za pomocą Express i Postman

  4. Ekspresowe wyświetlanie danych JS według identyfikatora

  5. Jak przełączyć element w tablicy w mongoDB?