2013-03-06 21 views
41

Ho un database mongo impostato. creazione di un nuovo oggetto Date in MongoDB creare un oggetto Date in formato ISO esempio: ISODate("2012-07-14T00:00:00Z")Creare un oggetto data ISO in javascript

Sto usando node.js per la connessione al database e mongo interrogare il database. quando mai creo un nuovo oggetto Date (new Date()) in javascript sua crea una javascript ad esempio, data oggetto: Wed Mar 06 2013 14:49:51 GMT-0600 (CST)

C'è un modo per creare un oggetto di data ISO in javascript in modo che io possa inviare l'oggetto direttamente al MongoDB ed eseguire interrogazione data

sono in grado di eseguire la query di seguito in MongoDB

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

ma non è possibile eseguire quando invio in un oggetto javaScript date dal nodo

Il ricettario mongodb fornisce un esempio python per interrogare il database mongo utilizzando il modulo datetime, ma non fornisce alcun esempio di utilizzo di javascript.

Qualsiasi aiuto è apprezzato. Ringraziandovi anticipatamente

+1

Se si utilizza il nodojs è possibile utilizzare il metodo 'toISOString()' definito in ECMAScript5. –

+4

Gli oggetti 'Date' JavaScript sono ciò che si usa con MongoDB. Non esiste un tipo separato ISODate che è necessario utilizzare. Puoi dare un esempio specifico di qualcosa che non funziona? – JohnnyHK

risposta

65

Provare a utilizzare the ISO string

var isodate = new Date().toISOString() 

Vedi anche: method definition at MDN.

+7

Il driver Mongodb funziona solo con l'oggetto data. Devo ammettere che la domanda è un po 'oscura. La seguente risposta ha risolto il mio problema: http://stackoverflow.com/questions/21286599/inserting-and-querying-date-with-mongodb-and-nodejs/21286896#21286896 –

+1

una stringa non è un oggetto quindi suppongo l'oggetto che vogliamo è solo il nuovo oggetto Date ('...'). Quindi in pratica ISODate (..) è uguale al nuovo Date (..)? – Rivenfall

+0

Ho trovato che usando questo metodo, la data è una stringa di data invece di un oggetto ISODate. Quello che intendo è che: [var isodate = new Date(). ToISOString()] => ["time": "2018-03-08T08: 15: 15.919Z"] While [var isodate = new Date (new Date () .toISOString())] => ["tempo": ISODate ("2018-03-08T08: 15: 16.097Z")] –

1

Ho risolto questo problema un'istanza di un nuovo oggetto Date in node.js: ...

in JavaScript, inviare il Date() toISOString() per 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) { ... }); 

quindi utilizzare l'ISOString per creare un nuovo oggetto Date in nodejs: ..

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) 
     }) 
    } 
}; 

Nota: sto usando Express e Mongoskin.

4

cercano di seguito:

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

Nel nodo, il conducente Mongo vi darà una stringa ISO, non l'oggetto. (es: Mon Nov 24 2014 01:30:34 GMT-0800 (PST)) Quindi, convertirlo semplicemente in js Data: new Date(ISOString);

+1

Dopo una ricerca di 3 ore, ho trovato questa soluzione. Nessun momento, nessuna conversione ISO, niente. –

Problemi correlati