2013-03-06 5 views
41

Ich habe eine Mongo-Datenbank eingerichtet. ein neues Date-Objekt in MongoDB erstellen So erstellen Sie ein Datum Objekt im ISO-Format zB: ISODate("2012-07-14T00:00:00Z")Erstellen Sie ein ISO-Datum-Objekt in Javascript

ich node.js bin mit Datenbank verbinden Mongo und die Datenbank abfragen. , wann immer ich ein neues Date-Objekt (new Date()) in javascript sein ein Javascript Date-Objekt zB erstellt: Wed Mar 06 2013 14:49:51 GMT-0600 (CST)

Gibt es eine Möglichkeit, ein ISO Date-Objekt in Javascript zu erstellen, so dass ich das Objekt direkt an die MongoDB schicken und führt Datum Abfrage

ich bin die Lage, die unter Abfrage in MongoDB

db.schedule_collection.find({ 
    start_date: { '$gte': new Date(2012, 01, 03, 8, 30) } 
}) 

durchzuführen, aber nicht durchführen kann, wenn ich in einem JavaScript-Date-Objekt von Knoten senden

Das mongodb-Kochbuch bietet ein Python-Beispiel, um die mongo-Datenbank mit dem datetime-Modul abzufragen, bietet aber kein Beispiel für Javascript.

Jede Hilfe wird geschätzt. Sie im Voraus deinnkening

+1

Wenn Sie nodejs verwenden, können Sie die Methode 'toISOString()' verwenden, die in ECMAScript5 definiert ist. –

+4

JavaScript "Date" -Objekte verwenden Sie mit MongoDB. Es gibt keinen separaten 'ISODate'-Typ, den Sie verwenden müssen. Können Sie ein konkretes Beispiel für etwas geben, das nicht funktioniert? – JohnnyHK

Antwort

65

Versuchen Sie es mit the ISO string

var isodate = new Date().toISOString() 

Siehe auch: method definition at MDN.

+7

Der Mongodb-Treiber funktioniert nur mit dem date-Objekt. Ich muss zugeben, dass die Frage ein wenig unklar ist. Die folgende Antwort löste mein Problem: http://stackoverflow.com/questions/21286599/inserting-and-querying-date-with-mongodb-and-nodejs/21286896#21286896 –

+1

eine Zeichenfolge ist kein Objekt, also rate ich das Objekt, das wir wollen, ist nur das neue Datum ('...') Objekt. Also ist ISODate (..) im Grunde dasselbe wie neues Date (..)? – Rivenfall

+0

Ich habe festgestellt, dass bei Verwendung dieser Methode das Datum eine Datumszeichenfolge anstelle des ISODate-Objekts ist. Was ich meine, ist das: [var isodate = new Date(). ToISOString()] => ["zeit": "2018-03-08T08: 15: 15.919Z"] Während [var isodate = neues Datum (neues Datum () .toISOString())] => ["time": ISODate ("2018-03-08T08: 15: 16.097Z")] –

1

ich dieses Problem gelöst, ein neues Date-Objekt in node.js Instanziierung: ...

In Javascript, senden Sie das Datum() toISOString() zu NodeJS. ...

var start_date = new Date(2012, 01, 03, 8, 30); 

$.ajax({ 
    type: 'POST', 
    data: { start_date: start_date.toISOString() }, 
    url: '/queryScheduleCollection', 
    dataType: 'JSON' 
}).done(function(response) { ... }); 

dann nutzen Sie das ISOString ein neues Date-Objekt in NodeJS zu erstellen: ..

exports.queryScheduleCollection = function(db){ 
    return function(req, res){ 

     var start_date = new Date(req.body.start_date); 

     db.collection('schedule_collection').find(
      { start_date: { $gte: start_date } } 
     ).toArray(function (err,d){ 
      ... 
      res.json(d) 
     }) 
    } 
}; 

Hinweis: ich verwende Express und Mongoskin.

4

versuchen unter:

var temp_datetime_obj = new Date(); 

collection.find({ 
    start_date:{ 
     $gte: new Date(temp_datetime_obj.toISOString()) 
    } 
}).toArray(function(err, items) { 
    /* you can console.log here */ 
}); 
8

In Knoten, wird der Mongo-Treiber Sie ein ISO-String geben, nicht das Objekt. (ex: Mon Nov 24 2014 01:30:34 GMT-0800 (PST)) Also einfach in ein js-Datum umwandeln: new Date(ISOString);

+1

Nach 3 Stunden Suche habe ich diese Lösung gefunden. Kein Moment Js, keine ISO-Konvertierung, nichts. –

Verwandte Themen