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

マングースを使用してmongodbに2日間を含める間にmongodbからデータを取得する方法

    答え 他の質問では正しい結果が返されるはずです。また、日付を日付オブジェクトとして保存することをお勧めします。

    $dateFromStringを使用して別のアプローチを試してみましょう 入力値についても同様です。

    tableReportdata.find({
      $expr: {
        $and: [
          {
            $gte: [
              {
                $dateFromString: {
                  dateString: "$todaydate",
                  format: "%d-%m-%Y",
                  timezone: "UTC"
                }
              },
              {
                $dateFromString: {
                  dateString: "01-06-2020",
                  format: "%d-%m-%Y",
                  timezone: "UTC"
                }
              }
            ]
          },
          {
            $lte: [
              {
                $dateFromString: {
                  dateString: "$todaydate",
                  format: "%d-%m-%Y",
                  timezone: "UTC"
                }
              },
              {
                $dateFromString: {
                  dateString: "07-06-2020",
                  format: "%d-%m-%Y",
                  timezone: "UTC"
                }
              }
            ]
          }
        ]
      }
    }, function(err, docs) {
      if (err) {
        console.log(err);
        return;
      } else {
        console.log("Successful loaded report data"); 
        res.json({ data: docs, msg: 'Report data loaded.' });
      }
    });
    
    

    ヘルパー機能付きの短いバージョン

    const dateUTCexpr = (dateString) => ({
      $dateFromString: {
        dateString,
        format: "%d-%m-%Y",
        timezone: "UTC"
      }
    })
    
    tableReportdata.find({
      $expr: {
        $and: [
          {
            $gte: [dateUTCexpr("$todaydate"), dateUTCexpr("01-06-2020")]
          },
          {
            $lte: [dateUTCexpr("$todaydate"), dateUTCexpr("07-06-2020")]
          }
        ]
      }
    }, function(err, docs) {
      if (err) {
        console.log(err);
        return;
      } else {
        console.log("Successful loaded report data"); 
        res.json({ data: docs, msg: 'Report data loaded.' });
      }
    });
    
    

    todaydateがある場合 Stringとして定義されています スキーマで、データベースで適切に変換されていることも確認してください。次のコードを使用できます

    const dateUTCexpr = (dateString) => ({
      $dateFromString: {
        dateString,
        format: "%d-%m-%Y",
        timezone: "UTC"
      }
    })
    
    tableReportdata.find({
      todaydate: {
        $gte: dateUTCexpr("01-06-2020"),
        $lte: dateUTCexpr("07-06-2020")
      }
    }, function(err, docs) {
      if (err) {
        console.log(err);
        return;
      } else {
        console.log("Successful loaded report data"); 
        res.json({ data: docs, msg: 'Report data loaded.' });
      }
    });
    
    



    1. Node.js Mongooseを使用してドキュメントを削除するにはどうすればよいですか?

    2. ubuntu16.10にmongodbをインストールできません

    3. カスタムMongoDbDockerイメージ

    4. mongoDBでユニオンクエリを作成する方法