복붙노트

[MONGODB] 두 날짜 사이의 객체를 찾기 MongoDB를

MONGODB

두 날짜 사이의 객체를 찾기 MongoDB를

나는 MongoDB의 내부 트윗을 저장 해본 결과,이 같은 각 개체의 모습 :

{
"_id" : ObjectId("4c02c58de500fe1be1000005"),
"contributors" : null,
"text" : "Hello world",
"user" : {
    "following" : null,
    "followers_count" : 5,
    "utc_offset" : null,
    "location" : "",
    "profile_text_color" : "000000",
    "friends_count" : 11,
    "profile_link_color" : "0000ff",
    "verified" : false,
    "protected" : false,
    "url" : null,
    "contributors_enabled" : false,
    "created_at" : "Sun May 30 18:47:06 +0000 2010",
    "geo_enabled" : false,
    "profile_sidebar_border_color" : "87bc44",
    "statuses_count" : 13,
    "favourites_count" : 0,
    "description" : "",
    "notifications" : null,
    "profile_background_tile" : false,
    "lang" : "en",
    "id" : 149978111,
    "time_zone" : null,
    "profile_sidebar_fill_color" : "e0ff92"
},
"geo" : null,
"coordinates" : null,
"in_reply_to_user_id" : 149183152,
"place" : null,
"created_at" : "Sun May 30 20:07:35 +0000 2010",
"source" : "web",
"in_reply_to_status_id" : {
    "floatApprox" : 15061797850
},
"truncated" : false,
"favorited" : false,
"id" : {
    "floatApprox" : 15061838001
}

어떻게 18시 47분 19 : 00 사이에있는 모든 개체를 찾아 체크 created_at 및 쿼리를 작성합니다? 날짜는 특정 포맷으로 저장되도록 내 문서를 업데이트해야합니까?

해결법

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

    1.MongoDB의 요리 책에있는 날짜 범위 (특정 월 또는 일)를 쿼리하는 문제에 아주 좋은 설명이 있지만 아래 나 자신을 시도 뭔가이며 작동하는 것 같다.

    MongoDB의 요리 책에있는 날짜 범위 (특정 월 또는 일)를 쿼리하는 문제에 아주 좋은 설명이 있지만 아래 나 자신을 시도 뭔가이며 작동하는 것 같다.

    items.save({
        name: "example",
        created_at: ISODate("2010-04-30T00:00:00.000Z")
    })
    items.find({
        created_at: {
            $gte: ISODate("2010-04-29T00:00:00.000Z"),
            $lt: ISODate("2010-05-01T00:00:00.000Z")
        }
    })
    => { "_id" : ObjectId("4c0791e2b9ec877893f3363b"), "name" : "example", "created_at" : "Sun May 30 2010 00:00:00 GMT+0300 (EEST)" }
    

    내 실험을 바탕으로 당신은 MongoDB의 지원이 있기 때문에에게 다음과 같은 원하지 않는 검색 결과를 제공하는 형식으로 날짜를 직렬화해야합니다.

    items.save({
        name: "example",
        created_at: "Sun May 30 18.49:00 +0000 2010"
    })
    items.find({
        created_at: {
            $gte:"Mon May 30 18:47:00 +0000 2015",
            $lt: "Sun May 30 20:40:36 +0000 2010"
        }
    })
    => { "_id" : ObjectId("4c079123b9ec877893f33638"), "name" : "example", "created_at" : "Sun May 30 18.49:00 +0000 2010" }
    

    두 번째 예에서는 어떤 결과가 예상하지만,받은 사람은 아직 거기 있었다. 기본 문자열 비교가 수행되기 때문입니다.

  2. ==============================

    2.명확합니다. 알고 중요한 것은 즉 :

    명확합니다. 알고 중요한 것은 즉 :

    여기에 우리가 몽고을 보장하기 위해 날짜 조작의 조금을 할 코드의 작업 조각이된다 (여기 내가 몽구스 모듈을 사용하여 날짜 속성입니다 행에 대한 결과를 원하는 있어요 이하 (MyDate가 PARAM로 주어진 날짜) 이전보다) 처리 할 수 ​​있습니다 올바르게 :

    var inputDate = new Date(myDate.toISOString());
    MyModel.find({
        'date': { $lte: inputDate }
    })
    
  3. ==============================

    3.http://bsonspec.org/#/specification 정하는 MongoDB를 실제로하는 int (64)와 같은 날짜의 밀리 저장

    http://bsonspec.org/#/specification 정하는 MongoDB를 실제로하는 int (64)와 같은 날짜의 밀리 저장

    당신은 자신의 현지 시간대와 날짜 개체를 인스턴스화합니다 클라이언트 드라이버로 날짜를 검색 할 때, 그것은 꽤 혼란 얻을 수 있습니다. 몽고 콘솔에서 자바 스크립트 드라이버는 확실하게이 작업을 수행 할 것입니다.

    당신이 당신의 시간대 걱정한다면, 다음 확인 당신이 당신이 그것을 다시 얻을 때해야하는데 무엇을 알고있다. 이것은 여전히 ​​관계없이 날짜 객체 (I 희망)에 어떤 시간대의 같은 INT (64)에 동일시되므로, 너무 많은 쿼리에 대한 문제가 안된다. 그러나 나는 확실히 실제 날짜 객체 (문자열이 아니라)에 질의를하고 운전자가 그 일을 할 것입니다.

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

    4.

    db.collection.find({"createdDate":{$gte:new ISODate("2017-04-14T23:59:59Z"),$lte:new ISODate("2017-04-15T23:59:59Z")}}).count();
    

    모음의 이름으로 컬렉션을 바꾸기 당신은 쿼리를 실행하려면

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

    5.수집 게시물에서 MongoDB를 (튜토리얼 기준) 파이썬에서 두 날짜 사이의 개체를 찾기 :

    수집 게시물에서 MongoDB를 (튜토리얼 기준) 파이썬에서 두 날짜 사이의 개체를 찾기 :

    from_date = datetime.datetime(2010, 12, 31, 12, 30, 30, 125000)
    to_date = datetime.datetime(2011, 12, 31, 12, 30, 30, 125000)
    
    for post in posts.find({"date": {"$gte": from_date, "$lt": to_date}}):
        print(post)
    

    여기서 { "$ GTE는"FROM_DATE는 "$ LT"TO_DATE}는 datetime.datetime 종류의면에서의 범위를 지정한다.

  6. ==============================

    6.$ GTE와 $ LT를 사용하여 두 날짜 사이의 기록을 찾으려면이 코드를 사용 :

    $ GTE와 $ LT를 사용하여 두 날짜 사이의 기록을 찾으려면이 코드를 사용 :

    db.CollectionName.find({"whenCreated": {
        '$gte': ISODate("2018-03-06T13:10:40.294Z"),
        '$lt': ISODate("2018-05-06T13:10:40.294Z")
    }});
    
  7. ==============================

    7.Moment.js과 비교 쿼리 연산자와 함께 사용

    Moment.js과 비교 쿼리 연산자와 함께 사용

      var today = moment().startOf('day');
      // "2018-12-05T00:00:00.00
      var tomorrow = moment(today).endOf('day');
      // ("2018-12-05T23:59:59.999
    
      Example.find(
      {
        // find in today
        created: { '$gte': today, '$lte': tomorrow }
        // Or greater than 5 days
        // created: { $lt: moment().add(-5, 'days') },
      }), function (err, docs) { ... });
    
  8. ==============================

    8.당신이 몽고로 채워 넣는다으로 GMT 시간대에 날짜를 변환합니다. 그 방법은 시간대 문제가 결코 아니다. 당신은 데이터가 프리젠 테이션을 위해 밖으로 철수 할 때 그럼 그냥 트위터 / 시간대 필드에서 수학을.

    당신이 몽고로 채워 넣는다으로 GMT 시간대에 날짜를 변환합니다. 그 방법은 시간대 문제가 결코 아니다. 당신은 데이터가 프리젠 테이션을 위해 밖으로 철수 할 때 그럼 그냥 트위터 / 시간대 필드에서 수학을.

  9. ==============================

    9.왜 양식 YYYYMMDDHHMMSS의 문자열을 정수로 변환하지? 시간 각 단위는 큰 정수를 만들 것이고, 대신 ISO 시간으로 변환하는 방법에 대한 걱정의 정수를 필터링 할 수 있습니다.

    왜 양식 YYYYMMDDHHMMSS의 문자열을 정수로 변환하지? 시간 각 단위는 큰 정수를 만들 것이고, 대신 ISO 시간으로 변환하는 방법에 대한 걱정의 정수를 필터링 할 수 있습니다.

  10. ==============================

    10.사용 $ GTE와 $ LTE는 MongoDB의 날짜 데이터 사이에서 찾을 수 있습니다

    사용 $ GTE와 $ LTE는 MongoDB의 날짜 데이터 사이에서 찾을 수 있습니다

    var tomorrowDate = moment(new Date()).add(1, 'days').format("YYYY-MM-DD");
    db.collection.find({"plannedDeliveryDate":{ $gte: new Date(tomorrowDate +"T00:00:00.000Z"),$lte: new Date(tomorrowDate + "T23:59:59.999Z")}})
    
  11. ==============================

    11.내가 객체가 나는 두 날짜 사이의 모든 기록 (문서)를 검색 할 나중에 만들어 지금까지 날짜를 저장할 필요가 내 요구 사항에 따라 나는이 모델에서 시도  내 HTML 파일에서 I는 다음의 형식은 mm / dd / yyyy 사용 된

    내가 객체가 나는 두 날짜 사이의 모든 기록 (문서)를 검색 할 나중에 만들어 지금까지 날짜를 저장할 필요가 내 요구 사항에 따라 나는이 모델에서 시도  내 HTML 파일에서 I는 다음의 형식은 mm / dd / yyyy 사용 된

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    
        <script>
    //jquery
        $(document).ready(function(){  
        $("#select_date").click(function() { 
        $.ajax({
        type: "post",
        url: "xxx", 
        datatype: "html",
        data: $("#period").serialize(),  
        success: function(data){
        alert(data);
        } ,//success
    
        }); //event triggered
    
        });//ajax
        });//jquery  
        </script>
    
        <title></title>
    </head>
    
    <body>
        <form id="period" name='period'>
            from <input id="selecteddate" name="selecteddate1" type="text"> to 
            <input id="select_date" type="button" value="selected">
        </form>
    </body>
    </html>
    

    내 평 (파이썬) 파일에 내가 "ISO 형식"으로 변환 다음과 같은 방법으로

    date_str1   = request.POST["SelectedDate1"] 
    SelectedDate1   = datetime.datetime.strptime(date_str1, '%m/%d/%Y').isoformat()
    

    내 컬렉션에 필드로 "되어 selectedDate"내 dbmongo 수집에 저장

    내가 쿼리를 다음 사용 2 날짜 사이의 데이터 나 문서를 검색

    db.collection.find( "SelectedDate": {'$gte': SelectedDate1,'$lt': SelectedDate2}})
    
  12. ==============================

    12.

    mongoose.model('ModelName').aggregate([
        {
            $match: {
                userId: mongoose.Types.ObjectId(userId)
            }
        },
        {
            $project: {
                dataList: {
                  $filter: {
                     input: "$dataList",
                     as: "item",
                     cond: { 
                        $and: [
                            {
                                $gte: [ "$$item.dateTime", new Date(`2017-01-01T00:00:00.000Z`) ]
                            },
                            {
                                $lte: [ "$$item.dateTime", new Date(`2019-12-01T00:00:00.000Z`) ]
                            },
                        ]
                     }
                  }
               }
            }
         }
    ])
    
  13. from https://stackoverflow.com/questions/2943222/find-objects-between-two-dates-mongodb by cc-by-sa and MIT license