복붙노트

[MONGODB] 날짜를 기준으로 반환 쿼리

MONGODB

날짜를 기준으로 반환 쿼리

나는 MongoDB의에서이 같은 데이터를

{ 
    "latitude" : "", 
    "longitude" : "", 
    "course" : "", 
    "battery" : "0", 
    "imei" : "0", 
    "altitude" : "F:3.82V", 
    "mcc" : "07", 
    "mnc" : "007B", 
    "lac" : "2A83", 
    "_id" : ObjectId("4f0eb2c406ab6a9d4d000003"), 
    "createdAt" : ISODate("2012-01-12T20:15:31Z") 
}

때문에 반환하는 위의 데이터는 DB에서 나에게 결과 : 어떻게 ({?? ?? 여기에 무슨 createdAt을 '}) db.gpsdatas.find 쿼리합니까?

해결법

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

    1.당신은 아마 예를 들어, 모든 항목이 지정된 날짜 이후에 생성, 다양한 쿼리를 만들고 싶어 :

    당신은 아마 예를 들어, 모든 항목이 지정된 날짜 이후에 생성, 다양한 쿼리를 만들고 싶어 :

    db.gpsdatas.find({"createdAt" : { $gte : new ISODate("2012-01-12T20:15:31Z") }});
    

    이 종종 시간 구성 요소 00:00:00 날짜 만 쿼리에 사용되는 때문에, (보다 크거나 같음) $ GTE를 사용하고 있습니다.

    당신이 정말로 다른 날짜에 해당 날짜를 찾으려면, 구문은 것

    db.gpsdatas.find({"createdAt" : new ISODate("2012-01-12T20:15:31Z") });
    
  2. ==============================

    2.당신은 하루의 시작, 하루의 끝을 얻기 위해이 같은 첫 번째 떨어져 두 날짜를 만들 수 있습니다.

    당신은 하루의 시작, 하루의 끝을 얻기 위해이 같은 첫 번째 떨어져 두 날짜를 만들 수 있습니다.

    var startDate = new Date(); // this is the starting date that looks like ISODate("2014-10-03T04:00:00.188Z")
    
    startDate.setSeconds(0);
    startDate.setHours(0);
    startDate.setMinutes(0);
    
    var dateMidnight = new Date(startDate);
    dateMidnight.setHours(23);
    dateMidnight.setMinutes(59);
    dateMidnight.setSeconds(59);
    
    ### MONGO QUERY
    
    var query = {
            inserted_at: {
                        $gt:morning,
                        $lt:dateScrapedMidnight
            }
    };
    
    //MORNING: Sun Oct 12 2014 00:00:00 GMT-0400 (EDT)
    //MIDNIGHT: Sun Oct 12 2014 23:59:59 GMT-0400 (EDT)
    
  3. ==============================

    3.그냥 노드 v0.12.7 및 v4.4.4 및 사용을 사용하여 몽고의 v3.2.3에서 비슷한 구현되었다 :

    그냥 노드 v0.12.7 및 v4.4.4 및 사용을 사용하여 몽고의 v3.2.3에서 비슷한 구현되었다 :

    { $gte: new Date(dateVar).toISOString() }
    

    사용하거나 toISOString 기능이없는 .find이 작품 () 쿼리 (00Z : 00 예를 들어, 2016-04-22T00) 나는 ISODate를 전달하고있다. .aggregate () $ 일치하는 쿼리에 사용하지만 그것은 toISOString 기능처럼하지 않습니다!

  4. ==============================

    4.당신이 지난 5 분 안에 모든 새로운 것을 얻고 싶다면 당신은 몇 가지 계산을해야하지만, 하드 않을 것이다 ...

    당신이 지난 5 분 안에 모든 새로운 것을 얻고 싶다면 당신은 몇 가지 계산을해야하지만, 하드 않을 것이다 ...

    먼저 당신이 일치하려는 속성에 인덱스를 생성 (오름차순에 대한 일종의 하강에 대한 방향 -1과 1 포함)

    db.things.createIndex({ createdAt: -1 }) // descending order on .createdAt
    

    새 날짜 () 생성자에 대한 입력으로 사용하기 전에 다음 쿼리 최근 5 분에서 만든 문서 (60 초 5 분 *) ... 자바 스크립트의 .getTime () 반환 밀리 초 때문에 당신은 1000 mulitply해야합니다.

    db.things.find({
            createdAt: {
                $gte: new Date(new Date().getTime()-60*5*1000).toISOString()
             }
         })
         .count()
    

    새 날짜에 대한 설명 (. 새 Date () 다음 getTime () - 60 * 1000 * 5) .toISOString는 ()로 다음 있습니다 :

    먼저 우리는 "분 전"계산 :

    이제 우리는 MongoDB를가 타임 스탬프를 필요로하는 ISO의 문자열 형식을 얻기 위해 새 Date () 생성자에 그 먹이를해야합니다.

    물론 이것은 당신이 노드 MongoDB의 네이티브 드라이버를 사용하는 경우 변수,하지만 일반적으로 물건을 확인하는 데 사용하는 것입니다 몽고 쉘에서이 작품에 좀 더 쉽게입니다.

  5. ==============================

    5.당신은 또한 시도 할 수 있습니다 :

    당신은 또한 시도 할 수 있습니다 :

    {
        "dateProp": { $gt: new Date('06/15/2016').getTime() }
    }
    
  6. ==============================

    6.당신은 몽구스를 사용하는 경우,

    당신은 몽구스를 사용하는 경우,

    try {
      const data = await GPSDatas.aggregate([
        {
          $match: { createdAt : { $gt: new Date() }
        },
        {
          $sort: { createdAt: 1 }
        }
      ])
      console.log(data)
    
    } catch(error) {
        console.log(error)
    }
    
  7. ==============================

    7.특정 날짜로 찾기 :

    특정 날짜로 찾기 :

    db.getCollection('CollectionName').find({"DepartureDate" : new ISODate("2019-06-21T00:00:00.000Z")})
    

    큰 GTE 또는 작은 LT로 찾기 :

    db.getCollection('CollectionName').find({"DepartureDate" : { $gte : new ISODate("2019-06-11T00:00:00.000Z") }})
    

    범위에서 찾기 :

    db.getCollection('CollectionName').find({ 
        "DepartureDate": { 
            $lt: new Date(), 
            $gte: new Date(new Date().setDate(new Date().getDate()-15))
          } 
        })
    
  8. from https://stackoverflow.com/questions/8835757/return-query-based-on-date by cc-by-sa and MIT license