복붙노트

[MONGODB] MongoDB의 ID와 타임 스탬프를 얻기

MONGODB

MongoDB의 ID와 타임 스탬프를 얻기

어떻게 MongoDB의 ID와 타임 스탬프를받을 수 있나요?

해결법

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

    1.타임 스탬프는 MongoDB에 ID의 제 4 바이트 내에 포함된다 (참조 : http://www.mongodb.org/display/DOCS/Object+IDs 참조).

    타임 스탬프는 MongoDB에 ID의 제 4 바이트 내에 포함된다 (참조 : http://www.mongodb.org/display/DOCS/Object+IDs 참조).

    당신의 타임 스탬프입니다 그래서 :

    timestamp = _id.toString().substring(0,8)
    

    date = new Date( parseInt( timestamp, 16 ) * 1000 )
    
  2. ==============================

    2.몽고 2.2이 변경된 (참조 : http://docs.mongodb.org/manual/core/object-id/)

    몽고 2.2이 변경된 (참조 : http://docs.mongodb.org/manual/core/object-id/)

    당신은 모든 몽고 쉘의 한 단계 내에서이 작업을 수행 할 수 있습니다 :

    document._id.getTimestamp();
    

    이 Date 객체를 반환합니다.

  3. ==============================

    3.타임 스탬프는 깊은 MongoDB를 객체의 창자 내에서 매장된다. 함께 따라 서리가있어.

    타임 스탬프는 깊은 MongoDB를 객체의 창자 내에서 매장된다. 함께 따라 서리가있어.

    MongoDB의 쉘에 로그인

    ubuntu@ip-10-0-1-223:~$ mongo 10.0.1.223
    MongoDB shell version: 2.4.9
    connecting to: 10.0.1.223/test
    

    항목을 삽입하여 데이터베이스를 만듭니다

    > db.penguins.insert({"penguin": "skipper"})
    > db.penguins.insert({"penguin": "kowalski"})
    > 
    

    거기 있는지 확인 :

    > show dbs
    local      0.078125GB
    penguins   0.203125GB
    

    데이터베이스 하나는 우리가 지금있는 것을 확인 할 수 있도록합니다

    > use penguins
    switched to db penguins
    

    자신에게 ISODate를 가져옵니다 :

    > ISODate("2013-03-01")
    ISODate("2013-03-01T00:00:00Z")
    

    일부 JSON 인쇄 :

    > printjson({"foo":"bar"})
    { "foo" : "bar" }
    

    행을 다시 가져 오기 :

    > db.penguins.find()
    { "_id" : ObjectId("5498da1bf83a61f58ef6c6d5"), "penguin" : "skipper" }
    { "_id" : ObjectId("5498da28f83a61f58ef6c6d6"), "penguin" : "kowalski" }
    

    우리는 단지 하나 개의 행을 검사하려면

    > db.penguins.findOne()
    { "_id" : ObjectId("5498da1bf83a61f58ef6c6d5"), "penguin" : "skipper" }
    

    해당 행의 _id를 가져옵니다 :

    > db.penguins.findOne()._id
    ObjectId("5498da1bf83a61f58ef6c6d5")
    

    _id 개체에서 타임 스탬프를 가져 오기 :

    > db.penguins.findOne()._id.getTimestamp()
    ISODate("2014-12-23T02:57:31Z")
    

    마지막으로 추가 된 레코드의 타임 스탬프를 가져 오기 :

    > db.penguins.find().sort({_id:-1}).limit(1).forEach(function (doc){ print(doc._id.getTimestamp()) })
    Tue Dec 23 2014 03:04:53 GMT+0000 (UTC)
    

    예 루프, 인쇄 문자열 :

    > db.penguins.find().forEach(function (doc){ print("hi") })
    hi
    hi
    

    찾기 (동일 실시 예 루프), 행 인쇄

    > db.penguins.find().forEach(function (doc){ printjson(doc) })
    { "_id" : ObjectId("5498dbc9f83a61f58ef6c6d7"), "penguin" : "skipper" }
    { "_id" : ObjectId("5498dbd5f83a61f58ef6c6d8"), "penguin" : "kowalski" }
    

    루프, 시스템 날짜를 얻을 :

    > db.penguins.find().forEach(function (doc){ doc["timestamp_field"] = new Date(); printjson(doc); })
    {
            "_id" : ObjectId("5498dbc9f83a61f58ef6c6d7"),
            "penguin" : "skipper",
            "timestamp_field" : ISODate("2014-12-23T03:15:56.257Z")
    }
    {
            "_id" : ObjectId("5498dbd5f83a61f58ef6c6d8"),
            "penguin" : "kowalski",
            "timestamp_field" : ISODate("2014-12-23T03:15:56.258Z")
    }
    

    루프, 각 행의 날짜를 얻을 :

    > db.penguins.find().forEach(function (doc){ doc["timestamp_field"] = doc._id.getTimestamp(); printjson(doc); })
    {
            "_id" : ObjectId("5498dbc9f83a61f58ef6c6d7"),
            "penguin" : "skipper",
            "timestamp_field" : ISODate("2014-12-23T03:04:41Z")
    }
    {
            "_id" : ObjectId("5498dbd5f83a61f58ef6c6d8"),
            "penguin" : "kowalski",
            "timestamp_field" : ISODate("2014-12-23T03:04:53Z")
    }
    

    그냥 날짜에 필터 아래로

    > db.penguins.find().forEach(function (doc){ doc["timestamp_field"] = doc._id.getTimestamp(); printjson(doc["timestamp_field"]); })
    ISODate("2014-12-23T03:04:41Z")
    ISODate("2014-12-23T03:04:53Z")
    

    Filterdown 더 그냥 문자열 :

    > db.penguins.find().forEach(function (doc){ doc["timestamp_field"] = doc._id.getTimestamp(); print(doc["timestamp_field"]) })
    Tue Dec 23 2014 03:04:41 GMT+0000 (UTC)
    Tue Dec 23 2014 03:04:53 GMT+0000 (UTC)
    

    날짜를 지정 유형을 얻을 베어 날짜를 인쇄 :

    > print(new Date())
    Tue Dec 23 2014 03:30:49 GMT+0000 (UTC)
    > typeof new Date()
    object
    > new Date("11/21/2012");
    ISODate("2012-11-21T00:00:00Z")
    

    YYYY-MM-DD로 날짜의 인스턴스를 변환

    > print(d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate())
    2014-1-1
    

    각 행에 대해 YYYY-MM-DD 형식으로 그것을 얻을 :

    > db.penguins.find().forEach(function (doc){ d = doc._id.getTimestamp(); print(d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate()) })
    2014-12-23
    2014-12-23
    

    toLocaleDateString은 짧입니다 :

    > db.penguins.find().forEach(function (doc){ d = doc._id.getTimestamp(); print(d.toLocaleDateString()) })
    Tuesday, December 23, 2014
    Tuesday, December 23, 2014
    

    YYYY-MM-DD HH의 각 행을 가져 오기 : mm : ss 형식 :

    > db.penguins.find().forEach(function (doc){ d = doc._id.getTimestamp(); print(d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds()) })
    2014-12-23 3:4:41
    2014-12-23 3:4:53
    

    마지막으로 추가 된 행의 날짜를 가져 오기 :

    > db.penguins.find().sort({_id:-1}).limit(1).forEach(function (doc){ print(doc._id.getTimestamp()) })
    Tue Dec 23 2014 03:04:53 GMT+0000 (UTC)
    

    당신이 완료되면 데이터베이스를 삭제합니다 :

    > use penguins
    switched to db penguins
    > db.dropDatabase()
    { "dropped" : "penguins", "ok" : 1 }
    

    그것이 사라 졌어요 있는지 확인합니다 :

    > show dbs
    local   0.078125GB
    test    (empty)
    

    이제 MongoDB를가 webscale입니다.

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

    4.여기 모두를위한 빠른 PHP 함수이다)

    여기 모두를위한 빠른 PHP 함수이다)

    public static function makeDate($mongoId) {
    
        $timestamp = intval(substr($mongoId, 0, 8), 16);
    
        $datum = (new DateTime())->setTimestamp($timestamp);
    
        return $datum->format('d/m/Y');
    }
    
  5. ==============================

    5.서버 측에서 MongoDB를 ObjectId가의 _id하기

    서버 측에서 MongoDB를 ObjectId가의 _id하기

    날짜는 새로운 날짜 = (에서는 parseInt (_id.toString ()를. 서브 스트링 (0,8), 16) * 1000)

    그리고 클라이언트 측의 사용에

    var dateFromObjectId = function (objectId) {
    return new Date(parseInt(objectId.substring(0, 8), 16) * 1000);
    };
    
  6. from https://stackoverflow.com/questions/6452021/getting-timestamp-from-mongodb-id by cc-by-sa and MIT license