sql >> データベース >  >> NoSQL >> MongoDB

マングース日付フィルター

    現在行っている文字列ではなく、クエリに実際の日付オブジェクトを使用します。 mongoは、 ISODate ヘルパーと基盤となるBSON(mongoがネイティブに使用するストレージデータ形式)には、Unix時間エポックからのミリ秒を示す64ビット(つまり8バイト)の符号付き整数である専用の日付型UTC datetimeがあり、クエリは次のように何も返しません。 mongoの日付フィールドをISO形式の文字列と比較します。

    したがって、 toISOString()を削除します 変換して日付オブジェクトを使用します:

    if (data.date) {
        const date = new Date();
        const dateRange = data.date.slice(0, -1); // strip the "d" from "7d"
        date.setDate(date.getDate() - dateRange);
        query.start = { $lte: date };
        console.log(query);
    }
    
    Call.find(query, function (error, docs) {
        if (error) callback(error, null);
        callback(null, docs);    
    });
    

    さらに良いことに、 momentjs を使用できます。 非常に直感的で簡単な日時操作APIを備えたプラグイン。使用できる方法の1つは、 extract()です。 日付オブジェクトを取得する関数n 数日前:

    if (data.date) {    
        const dateRange = data.date.slice(0, -1); // strip the "d" from "7d"
        const date = moment().subtract(dateRange, "days");
        query.start = { $lte: date };
        console.log(query);
    }
    
    Call.find(query, function (error, docs) {
        if (error) callback(error, null);
        callback(null, docs);    
    });
    



    1. Mongooseは、ObjectIdではなく文字列として_idを保存しました

    2. C#ドライバーを使用してMongoDBにコレクションが存在するかどうかを確認するにはどうすればよいですか?

    3. node.jsとmongodbでの非同期データベースクエリの処理

    4. クエリが一致した後に更新を実行するには、mongodbで集計を使用します