복붙노트

[MONGODB] 쿼리는 MongoDB를 가진 마지막으로 X 분의 데이터를 얻을 수 있습니다

MONGODB

쿼리는 MongoDB를 가진 마지막으로 X 분의 데이터를 얻을 수 있습니다

나는 MongoDB를 시작으로하고있어, 나는이 문서의 형식이 내 DB를 조회하기 위해 노력하고있어 :

{ "_id" : ObjectId("520b8b3f8bd94741bf006033"), "value" : 0.664, "timestamp" : ISODate("2013-08-14T13:48:35Z"), "cr" : ISODate("2013-08-14T13:50:55.834Z") }

나는이 쿼리 날짜 시간에서 마지막 기록을 얻을 수 있습니다 :

> db.mycol.find({timestamp:{$gt: ISODate("2013-08-14T13:48:00Z")}}).sort({x:1});

그러나 나는 어떻게이에 대한 쿼리를 구축 할 수 있습니다 18 분 전에서 값 필드와 타임 스탬프와 세트를 얻으려고? 양해 해 주셔서 감사합니다 모두 ...

해결법

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

    1.MongoDB를 약하지만, 자바 스크립트에 대해 그리고 무엇 몽고 쉘에서 사용할 수 정말 아니에요 18 분 부분의 경우 :

    MongoDB를 약하지만, 자바 스크립트에 대해 그리고 무엇 몽고 쉘에서 사용할 수 정말 아니에요 18 분 부분의 경우 :

    query = {
        timestamp: { // 18 minutes ago (from now)
            $gt: new Date(ISODate().getTime() - 1000 * 60 * 18)
        }
    }
    

    몽고 쉘에서 작동하지만, 다른 언어에 대한 몽고 드라이버를 사용하는 것은 정말 다른 것입니다.

    가치와 타임 스탬프 모두 작은 스키마를 통해 "프로젝트"받는 사람 :

    projection = {
        _id: 0,
        value: 1,
        timestamp: 1,
    }
    

    모두 적용 :

    db.mycol.find(query, projection).sort({timestamp: 1});
    

    글쎄, 그건 중복이있을 수 있습니다 때문에 "세트"아직 아니다. 그들을 제거하려면 집계 프레임 워크에서 $ 그룹을 사용할 수 있습니다 :

    db.mycol.aggregate([
        {$match: query},
        {$group: {
            _id: {
                value: "$value",
                timestamp: "$timestamp",
            }
        }},
        {$project: {
            value: "$_id.value",
            timestamp: "$_id.timestamp",
        }},
        {$sort: {timestamp: 1}},
    ])
    
  2. ==============================

    2.와우, @Alistair_Nelson I 덕분에 예 ISODate ( ": 00 : 00Z 2013-08-14T14")에서 마지막 18 분 얻을 수 있도록, n 분 전에서 데이터를 얻을 수 있었다 :

    와우, @Alistair_Nelson I 덕분에 예 ISODate ( ": 00 : 00Z 2013-08-14T14")에서 마지막 18 분 얻을 수 있도록, n 분 전에서 데이터를 얻을 수 있었다 :

    db.mycol.find({timestamp:{$gt: new Date(ISODate("2013-08-14T14:00:00Z")-18*60000)}})
    

    필드 만 얻으려면 내가 필요

    db.mycol.find({timestamp:{$gt: new Date(ISODate("2013-08-14T14:00:00Z")-18*60000)}},{value:1,timestamp:1, _id:0})
    
  3. ==============================

    3.당신은 MongoDB를 사용 nodejs에서 현재 타임 스탬프의 데이터에 액세스 할 수 있습니다

    당신은 MongoDB를 사용 nodejs에서 현재 타임 스탬프의 데이터에 액세스 할 수 있습니다

     const collection1 = dbo.collection('customers');
        var dateq = new Date();
          collection1.find({    "Timestamp" : { $gt: new Date(dateq.getTime() - 6000)}  
        }).toArray(function(err , docs){   
        console.log(docs);
        }
    

    코드 끝

  4. from https://stackoverflow.com/questions/18233945/query-to-get-last-x-minutes-data-with-mongodb by cc-by-sa and MIT license