sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB skillnad mellan DateTime-objekt och ÅÅÅÅ-MM-DD-sträng

Om du inte bryr dig om tidszonsstöd i din applikation bör det fungera bra att använda strängar för grundläggande frågor i MongoDB (men om det spelar någon roll, vill du ha ett riktigt Date typ).

Men om du senare vill göra datummatematik eller använda aggregeringsramverket med ditt datumfält, är det nödvändigt att fältet faktiskt är ett Date typ:

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

Du kan till exempel använda $dayOfWeek funktion på Date maskinskrivet fält.

Du kan förmodligen göra några enkla saker som grupp efter år genom att använda $substr (doc ) i MongoDB, men den resulterande koden kommer inte att vara lika tydlig (inte heller fungera lika bra).

Även om det inte är någon stor skillnad, rekommenderar jag att du lagrar dem som Date typer om möjligt generellt.

Jag ser i dokumenten för Perl-drivrutinen som utvecklare varnas för att använda DateTime på grund av att det är väldigt långsamt, så kanske om du använder Perl regelbundet och aggregeringsramverket inte är ett stort problem, skulle du kanske vara bättre att lagra dem som antingen nummer eller som strängar och konvertera dem efter behov i Perl.

Om utrymme är ett problem, ta bort onödiga tecken (som -). ):

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

Det skulle vara 13 tecken. Ett DateTime-värde i BSON /MongoDB kräver å andra sidan 8 byte (liksom Perl $time funktion).

(Jag rekommenderar starkt att du gör lite prestandatester för att ta reda på om prestandaeffekten av att använda ett Date skriv in MongoDB med Perl kommer att påverka dina typiska arbetsflöden.)



  1. C# mongo-frågor med json-strängar

  2. Är Wikipedias förklaring av Map Reduces reducering felaktig?

  3. Hur sparar man bara en databas i Redis?

  4. Hitta samlingens namn från document._id i meteor (mongodb)