In meiner mongodb Sammlung habe ich einen Datensatz mit:Wie erhalte ich einen Datensatz innerhalb eines Datumsbereichs in mongodb?
var birthYear = 1983;
var birthDateStart = new Date('1.1.' + birthYear); //Sat Jan 01 1983 00:00:00 GMT+0100 (Mitteleuropäische Zeit)
var birthDateEnd = new Date('12.30.' + birthYear); //Fri Dec 30 1983 00:00:00 GMT+0100 (Mitteleuropäische Zeit)
var cursor = db.collection('users').find({
birth_date: {$gte: birthDateStart, $lt: birthDateEnd}
})
Ich denke, das Problem ist, das Datumsformat, wie:
//mongodb field: "birth_date": "1983-05-06T16:26:32.613Z"
Und hier meine Entdeckung Abfrage, diesen Rekord im Bereich zu bekommen kann ich das gleiche Date() Format wie das in der Datenbank bekommen?
verwendete ich variety das DB-Schema zu erhalten:
+--------------------------------------------------+
| key | types | occurrences | percents |
| ------------ | -------- | ----------- | -------- |
| _id | ObjectId | 1 | 100.0 |
| bio | String | 1 | 100.0 |
| birth_date | String | 1 | 100.0 |
+--------------------------------------------------+
Ich benutze das 'mongodb' Paket für Express.js - und isodate können nicht().
ReferenceError: ISODate is not defined
Es ist in diesem Format. Sie betrachten das "stringified" -Formular. Aber Ihre Daten könnten möglicherweise selbst Strings sein. Zeigen Sie Ihre tatsächlichen Daten aus der [Mongo Shell.] (Https://docs.mongodb.com/manual/reference/program/mongo/#bin.mongo). Das wird uns sicher sagen, wie Ihre "birth_date" -Daten tatsächlich aussehen. –
Auch sollte "neues Datum (" yyyy-mm-dd ") sein, um ein" Date "-Objekt im UTC-Zeitraum als MongoDB zu konstruieren Daten sollten gespeichert werden, aber wieder müssen wir die tatsächliche Darstellung der Daten sicher sein .. –
Mögliches Duplikat von [Objekte zwischen zwei Daten finden MongoDB] (https://stackoverflow.com/questions/2943222/find-objects -zwischen-zwei-dates-mongodb) –