programing

Mongodb는 오늘 날짜별로 생성된 결과를 찾습니다.

subpage 2023. 6. 23. 22:10
반응형

Mongodb는 오늘 날짜별로 생성된 결과를 찾습니다.

매달 결과를 얻기 위해 이 질문이 있습니다.하지만 저는 오늘의 결과를 얻고 싶었습니다.

var start = new Date(2010, 11, 1);
var end = new Date(2010, 11, 30);

db.posts.find({created_on: {$gte: start, $lt: end}});

이것을 하는 가장 좋은 방법은 무엇입니까?

시작 날짜 개체는 현재 날짜 시간을 다음 시간으로 유지해야 합니다.00:00:00.000(밀리초 정밀도) 및 오늘 날짜의 시간을 다음으로 설정합니다.23:59:59.999:

var start = new Date();
start.setHours(0,0,0,0);

var end = new Date();
end.setHours(23,59,59,999);

그런 다음 MongoDB 쿼리 연산자에서 수정된 날짜 개체를 평소와 같이 전달합니다.

db.posts.find({created_on: {$gte: start, $lt: end}});

dayjs date 유틸리티 라이브러리를 사용하는 경우 dayjs current date 객체의 및 메서드를 사용하여 문자열을 전달할 수 있습니다.'day'다음과 같이 주장대로:

const start = dayjs().startOf('day'); // set to 12:00 am today
const end = dayjs().endOf('day'); // set to 23:59 pm today

다음과 같이 사용할 수도 있습니다.

db.posts.find({
    $expr: {
        $eq: [
            { $dateToString: { format: '%Y-%m-%d', date: '$$NOW' } },
            { $dateToString: { format: '%Y-%m-%d', date: '$created_on' } },
        ],
    },
})

해결책

오늘 날짜 결과 또는 날짜 사이의 데이터를 찾으려면 다음을 사용합니다.

노드 JS:

// Date format YYYY-MM-DD
// Suppose you want to look for 1 day data between 2021-12-27 00:00:00 and 2021-12-28 00:00:00
let start = new Date("2021-12-27");
let end = new Date("2021-12-28");

// "created_on" can be any field with a date 
db.posts.find({created_on: {$gte: start, $lt: end}});

이것은 Mongo Shell에서도 작동합니다.

db.posts.find({created_on: {$gte: new ISODate("2021-12-27T00:00:00.000Z"), $lt: new ISODate("2021-12-28T00:00:00.000Z")}})

다른 방법:

// 27th half day
db.posts.find({created_on: {$gte: new Date("2021-12-27T00:00:00.000Z"), $lt: new Date("2021-12-27T12:00:00.000Z")}})

언급

find데이터 선택/필터링

$gte같음 / 같음

$lt보다 낮음

// Get Today Start Date and End Date
  let startOfDay = new Date();
  startOfDay.setHours(0, 0, 0, 0);
  let endOfDay = new Date();
  endOfDay.setHours(23, 59, 59, 999);

  // Get Yesterday Start Date and End Date
  let startOfYesterday = new Date();
  startOfYesterday.setDate(startOfYesterday.getDate() - 1);
  startOfYesterday.setHours(0, 0, 0, 0);
  let endOfYesterday = new Date();
  endOfYesterday.setDate(endOfYesterday.getDate() - 1);
  endOfYesterday.setHours(23, 59, 59, 999);

  // Get Last Month Start Date and End Date
  let startOfPreviousMonth = new Date();
  startOfPreviousMonth.setMonth(startOfPreviousMonth.getMonth() - 1);
  startOfPreviousMonth.setDate(1);
  startOfPreviousMonth.setHours(0, 0, 0, 0);
  let endOfPreviousMonth = new Date();
  endOfPreviousMonth.setMonth(endOfPreviousMonth.getMonth() - 1);
  let lastDayOfPreviousMonth = new Date(
    endOfPreviousMonth.getFullYear(),
    endOfPreviousMonth.getMonth() + 1,
    0
  );
  endOfPreviousMonth.setDate(lastDayOfPreviousMonth.getDate());
  endOfPreviousMonth.setHours(23, 59, 59, 999);

언급URL : https://stackoverflow.com/questions/29327222/mongodb-find-created-results-by-date-today

반응형