MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách lấy dữ liệu từ mongodb giữa bao gồm hai ngày trong mongodb bằng mongoose

Câu trả lời trên câu hỏi khác của bạn sẽ trả về kết quả chính xác. Tôi cũng sẽ nhấn mạnh rằng tốt hơn nên lưu trữ ngày tháng dưới dạng đối tượng ngày tháng.

Hãy thử một cách tiếp cận khác bằng cách sử dụng $dateFromString trên các giá trị đầu vào.

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

Phiên bản ngắn hơn có chức năng trợ giúp

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

Nếu bạn có todaydate được định nghĩa là String trong lược đồ của bạn, cũng hãy đảm bảo rằng nó được chuyển đổi đúng cách trong cơ sở dữ liệu của bạn, bạn có thể sử dụng mã sau

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Upsert giải thích

  2. MongoDB:Kéo khóa hoàn chỉnh:Cặp mảng

  3. MongoDB C # Driver 2.0 - Cập nhật tài liệu

  4. Lỗi kết nối với Azure:Ký tự không hợp lệ trong mật khẩu với mongoose 5.0.1 nhưng hoạt động trong 4.13.9

  5. Chỉ số không gian địa lý Mongo và Meteor