MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Differenza MongoDB tra l'oggetto DateTime e la stringa AAAA-MM-GG

Se non ti interessa il supporto del fuso orario nella tua applicazione, l'utilizzo di stringhe per le query di base in MongoDB dovrebbe funzionare correttamente (ma se è importante, ti consigliamo una vera Date tipo).

Tuttavia, se in seguito desideri eseguire calcoli sulla data o utilizzare il Framework di aggregazione con il campo della data, è necessario che il campo sia effettivamente una Date digita:

http://docs.mongodb.org/manual/reference/aggregation/ #data-operatori

Ad esempio, potresti usare il $dayOfWeek funzione sulla Date campo digitato.

Probabilmente potresti fare alcune cose semplici come raggruppare l'anno usando $substr (doc ) in MongoDB, ma il codice risultante non sarà così chiaro (né probabilmente funzionerà altrettanto bene).

Anche se non è una grande differenza, ti consiglio di salvarli come Date tipi se possibile in generale.

Vedo nei documenti per il driver Perl che gli sviluppatori sono avvisati dall'usare il DateTime a causa del fatto che è molto lento, quindi forse se usi Perl regolarmente e Aggregation Framework non è un grosso problema, faresti meglio a salvarli come numeri o come stringhe e convertirli secondo necessità in Perl.

Se lo spazio è un problema, rimuovi i caratteri non necessari (come - ):

20130613 -> 
    4 bytes for length of string 
    8 bytes encoded as UTF-8
    NULL character

Sarebbero 13 caratteri. Un valore DateTime in BSON /MongoDB richiede invece 8 byte (come farebbe il Perl $time funzione).

(Ti consiglio vivamente di eseguire un po' di test delle prestazioni per scoprire se l'impatto sulle prestazioni dell'utilizzo di una Date digitare MongoDB con Perl avrà un impatto sui tuoi flussi di lavoro tipici.)