복붙노트

[MONGODB] 마지막 n 일 이내에 모든 문서 찾기

MONGODB

마지막 n 일 이내에 모든 문서 찾기

나의 일상 컬렉션과 같은 문서가 있습니다 :

..
{ "date" : ISODate("2013-01-03T00:00:00Z"), "vid" : "ED", "san" : 7046.25, "izm" : 1243.96 }
{ "date" : ISODate("2013-01-03T00:00:00Z"), "vid" : "UA", "san" : 0, "izm" : 0 }
{ "date" : ISODate("2013-01-03T00:00:00Z"), "vid" : "PAL", "san" : 0, "izm" : 169.9 }
{ "date" : ISODate("2013-01-03T00:00:00Z"), "vid" : "PAL", "san" : 0, "izm" : 0 }
{ "date" : ISODate("2013-01-03T00:00:00Z"), "vid" : "CTA_TR", "san" : 0, "izm" : 0 }
{ "date" : ISODate("2013-01-04T00:00:00Z"), "vid" : "CAD", "san" : 0, "izm" : 169.9 }
{ "date" : ISODate("2013-01-04T00:00:00Z"), "vid" : "INT", "san" : 0, "izm" : 169.9 }
...

나는 여기에 공간을 절약 할 _id 필드를 떠났습니다. 내 작업은 "지난 15 일 이내에 모든 문서를 가져올 것"이다. 당신이 볼 수 있듯이 어떻게 든해야

그래서, 결과에, 나는 컬렉션의 최신부터 15 일 이내에 모든 문서를 볼 수 있습니다.

어떻게 그렇게 할 수 있습니까?

고맙습니다

해결법

  1. ==============================

    1.나는 당신의 데이터 샘플에 대해 다음 쿼리를 테스트하고 완벽하게 일했다 :

    나는 당신의 데이터 샘플에 대해 다음 쿼리를 테스트하고 완벽하게 일했다 :

    db.datecol.find(
    {
        "date": 
        {
            $gte: new Date((new Date().getTime() - (15 * 24 * 60 * 60 * 1000)))
        }
    }
    ).sort({ "date": -1 })
    
  2. ==============================

    2.당신은 모든 고유 한 날짜를 얻기 위해 별개의 명령을 실행해야합니다. 아래는 예입니다. 은 "값"배열은 클라이언트 측에서 가장 최근의 십오일를 검색 할 필요가있는 컬렉션의 모든 고유 한 날짜가

    당신은 모든 고유 한 날짜를 얻기 위해 별개의 명령을 실행해야합니다. 아래는 예입니다. 은 "값"배열은 클라이언트 측에서 가장 최근의 십오일를 검색 할 필요가있는 컬렉션의 모든 고유 한 날짜가

    db.runCommand ( { distinct: 'datecol', key: 'date' } )
    {
        "values" : [
           ISODate("2013-01-03T00:00:00Z"),
           ISODate("2013-01-04T00:00:00Z")
        ],
        "stats" : {
           "n" : 2,
           "nscanned" : 2,
           "nscannedObjects" : 2,
           "timems" : 0,
           "cursor" : "BasicCursor"
        },
        "ok" : 1
    }
    

    그런 다음 아래 두 날짜를 언급 중 하나에 속하는 모든 문서를 발견 한 예는 1 단계에서 가장 최근 (15) 날짜와 운영자의 $를 사용합니다.

    db.datecol.find({
      "date":{
         "$in":[
            new ISODate("2013-01-03T00:00:00Z"), 
            new ISODate("2013-01-04T00:00:00Z")
          ]
      }
    })
    
  3. from https://stackoverflow.com/questions/15572607/find-all-documents-within-last-n-days by cc-by-sa and MIT license