MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Node.js zu MongoDB:Suche nach Datum

Sie brauchen nichts von dieser Verpackung. Ein Datum ist ein Datum :

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

Nun natürlich, wenn diese "Datumsangaben" in Ihrem Dokument tatsächlich "Strings" und kein richtiges Datum sind typen dann ist das dein problem. Und was Sie wirklich Sie müssen diese Werte korrigieren, damit sie echte Daten sind.

Dies gilt für alle Sprachimplementierung, bei der Sie mit dem nativen "date"-Typ arbeiten und den Treiber die Konvertierung für Sie erledigen lassen sollten.

So bestimmen Sie, ob das Feld eine Zeichenfolge ist

Nun, der klare Unterschied ist, wenn Sie sich ein Dokument in der Mongo-Shell ansehen, wenn es ein echter BSON-Datumstyp ist, dann sieht es so aus:

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

Wenn das nicht klar genug ist, gibt es den $type Operator, den Sie in einer Abfrage wie dieser verwenden können:

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

Es ist auch nicht MongoDB, das dies tut, wenn es sich um eine Zeichenfolge handelt, aber eher eine schlechte Implementierung in der Anwendung oder dem Import, der für die Erstellung verantwortlich war. Darum ging es bei den Punkten in der ersten Antwort.