web-dev-qa-db-ja.com

ISODateが定義されていません

Nodejs/mongooseを使用してmongodbから結果を取得しようとしています。

var dateStr = new Date(year,month,day,0,0,0);
var nextDate = new Date(year,month,day,23,59,59);

GPSData.find({"createdAt" : { $gte : new ISODate(dateStr), $lte:  new ISODate(nextDate) }}, function(err, data) {
  if(err)
    console.log(err); 
});

エラー:ISODate is not defined

34
coure2011

ISODateはMongoDBの一部であり、お客様のケースでは使用できないことに注意してください。代わりにDateを使用する必要があり、MongoDBドライバー(たとえば、現在使用しているMongoose ORM)がDateISODateの間の型変換を処理します。 。

47
qiao

次のように使用して、ISO文字列の日付を変換できます。

GPSData.find({"createdAt" : { $gte : new Date(year,month,day,0,0,0).toISOString(), $lte:  new Date(year,month,day,23,59,59).toISOString() }}, function(err, data) {
  if(err)
    console.log(err); 
});
1
Jitendra

私の場合、ISODatesでクエリを変換していました

let dateString = "2014-01-22T14:56:59.301Z";

$gte : ISODate(dateStr)

node.jsでは

$gte : new Date(dateStr)
0
hestellez

ISOの代わりに「新しい日付」ノードを使用するjsはISO自体を処理します。ISOを記述する必要はなく、単に「新しい日付」を使用します。

0
Rahul Bhat

JavaScriptでモーメントJSを使用して日付をMongoDB ISODate形式に変換します

MongoDBは、ISODateを主要な日付タイプとして使用します。 MongoDBコレクションに日付オブジェクトを挿入する場合は、Date()シェルメソッドを使用できます。

特定の日付を指定するには、0〜9999の範囲の年を含むISO-8601日付文字列をnew Date()コンストラクターまたはISODate()関数に渡します。これらの関数は次の形式を受け入れます。

  • 新しい日付("<YYYY-mm-dd>"は、指定された日付のISODateを返します。
  • 新しい日付("<YYYY-mm-ddTHH:MM:ss>"は、クライアントのローカルタイムゾーンの日時を指定し、指定された日時のISODateをUTCで返します。
  • 新しい日付("<YYYY-mm-ddTHH:MM:ssZ>"は、UTCで日時を指定し、指定された日時でUTCでISODateを返します。
  • new Date()は、Unixエポック(1970年1月1日)以降の日時をミリ秒で指定し、結果のISODateインスタンスを返します。

JavaScriptでコードを記述していて、JavaScript日付オブジェクトを渡してMongoDBクライアントで使用したい場合、最初に行うことは、JavaScript日付をMongoDB日付形式(ISODate)に変換することです。方法は次のとおりです。

    var today = moment(new Date()).format('YYYY-MM-DD[T00:00:00.000Z]');
    console.log("Next day -- " + (reqDate.getDate() + 1))
    var d = new Date();
    d.setDate(reqDate.getDate() + 1);
    var tomorrow = moment(d).format('YYYY-MM-DD[T00:00:00.000Z]');

new Date()シェルメソッドを使用して、todayとtorowのオブジェクトをMongoDBクエリに渡すことができます。

  MongoClient.connect(con, function (err, db) {
    if (err) throw err
    db.collection('orders').find({ "order_id": store_id, "orderDate": {     
       "$gte": new Date(today), "$lt": new Date(tomorrow)}
     }).toArray(function (err, result) {
        console.log(result);
        if (err) throw err
          res.send(result);
    })
  })
0
Farrukh Malik