sql >> Database >  >> NoSQL >> MongoDB

MongoDB-verschil tussen DateTime-object en YYYY-MM-DD string

Als u niet geïnteresseerd bent in tijdzone-ondersteuning in uw toepassing, dan zou het gebruik van strings voor basisquery's in MongoDB prima moeten werken (maar als het er wel toe doet, wilt u een echte Date type).

Als u echter later datumberekeningen wilt doen of het Aggregation Framework met uw datumveld wilt gebruiken, is het noodzakelijk dat het veld daadwerkelijk een Date is. typ:

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

U kunt bijvoorbeeld de $dayOfWeek . gebruiken functie op de Date getypt veld.

U kunt waarschijnlijk enkele eenvoudige dingen doen, zoals groeperen op jaar door $substr . te gebruiken (doc ) in MongoDB, maar de resulterende code zal niet zo duidelijk zijn (en waarschijnlijk ook niet zo goed presteren).

Hoewel het geen enorm verschil is, raad ik aan ze op te slaan als Date typen indien mogelijk in het algemeen.

Ik zie in de docs voor het Perl-stuurprogramma waarvoor ontwikkelaars worden gewaarschuwd voor het gebruik van de DateTime vanwege het feit dat het erg traag is, dus misschien als je Perl regelmatig gebruikt, en het Aggregation Framework geen groot probleem is, kun je ze beter als getallen of als strings opslaan en ze naar behoefte converteren in Perl.

Als spatie een probleem is, verwijder dan onnodige tekens (zoals de - ):

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

Dat zouden 13 tekens zijn. Een DateTime-waarde in BSON /MongoDB vereist daarentegen 8 bytes (net als de Perl $time functie).

(Ik raad u ten zeerste aan een beetje prestatietests uit te voeren om erachter te komen of de prestatie-impact van het gebruik van een Date typ MongoDB met Perl heeft invloed op uw typische workflows.)



  1. Hoe te letten op wijzigingen in specifieke velden in de MongoDB-wijzigingsstroom

  2. Documenten verwijderen uit een MongoDB-verzameling op basis van de tijd van een datumveld

  3. Hoe een klasse-item te versieren als een index en hetzelfde te krijgen als het gebruik van assuranceIndex?

  4. Mangoest vindt terugkerend vreemd voorwerp