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

MongoDB forskel mellem DateTime-objekt og YYYY-MM-DD-streng

Hvis du er ligeglad med tidszoneunderstøttelse i din applikation, så burde brug af strenge til grundlæggende forespørgsler i MongoDB fungere fint (men hvis det gør noget, vil du have en rigtig Date type).

Men hvis du senere vil lave date-matematik eller bruge aggregeringsrammen med dit datofelt, er det nødvendigt, at feltet faktisk er en Date type:

http://docs.mongodb.org/manual/reference/aggregation/ #date-operators

For eksempel kan du bruge $dayOfWeek funktion på Date indtastet felt.

Du kunne sandsynligvis gøre nogle simple ting som gruppe efter år ved at bruge $substr (doc ) i MongoDB, men den resulterende kode vil ikke være så tydelig (og sandsynligvis heller ikke fungere så godt).

Selvom det ikke er den store forskel, vil jeg anbefale at gemme dem som Date typer, hvis det er muligt generelt.

Jeg kan se i dokumenterne for Perl-driveren, som udviklere advares mod at bruge DateTime på grund af det faktum, at det er meget langsomt, så måske hvis du bruger Perl regelmæssigt, og aggregeringsrammen ikke er et stort problem, ville du være bedre at gemme dem som enten tal eller som strenge og konvertere dem efter behov i Perl.

Hvis plads er et problem, skal du fjerne unødvendige tegn (såsom -). ):

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

Det ville være 13 tegn. En DateTime-værdi i BSON /MongoDB kræver på den anden side 8 bytes (ligesom Perl $time ville funktion).

(Jeg vil på det kraftigste anbefale, at du laver en ydelsestest for at finde ud af, om virkningen af ​​ydeevnen ved at bruge en Date indtastning i MongoDB med Perl vil påvirke dine typiske arbejdsgange.)



  1. MongoDB Multiple Masters i ReplicaSet

  2. Fatal fejl:Klasse 'MongoDate' blev ikke fundet ved brug af mongodb php driver 1.1.2 og PHP 7.0.2 - Laravel 5.1

  3. Sådan forbindes nodeJS docker-container til mongoDB

  4. Indlejret dokument med tilhørende_to-forening i Mongoid