sql >> Databasteknik >  >> NoSQL >> MongoDB

Node.js till MongoDB:hitta efter datum

Du behöver inte något av denna inpackning. Ett datum är ett datum :

var zeroth = {$or:[ {start: new Date(), {users:{$size:2}} ]}; 

Nu förstås om dessa "datum" i ditt dokument faktiskt är "strängar" och inte korrekt datum typer så är det ditt problem. Och vad du egentligen måste fixa dessa värden så att de är riktiga datum.

Detta gäller alla språkimplementering, där du bör arbeta med den ursprungliga "datum"-typen och låta föraren göra omvandlingen åt dig.

Hur man avgör om fältet är en sträng

Den tydliga skillnaden är när du tittar på ett dokument i mongo-skalet, om det är en riktig BSON-datumtyp kommer det att se ut så här:

"start": ISODate("2014-03-31T08:47:48.946Z"),

Om det inte är tillräckligt tydligt finns det $type operator som du kan använda i en fråga som denna:

db.collection.find({ "start": { "$type": 2 } }).count()

Det är också inte MongoDB som gör detta om det är en sträng, men snarare dålig implementering i applikationen eller importen som var ansvarig för att skapa detta. Vilket var vad poängen i det första svaret handlade om.




  1. Redis transaktioner

  2. docker-compose undertrycka mongodb-utgång

  3. Hur kan jag skapa unika ID:n för inbäddade dokument i MongoDB?

  4. Spara Lista över gränssnittsobjekt med mongo-drivrutin för java