mongodb ID에서 타임 스탬프 가져 오기
MongoDB ID에서 타임 스탬프를 어떻게 얻습니까?
타임 스탬프는 mongoDB ID의 처음 4 바이트에 포함됩니다 ( http://www.mongodb.org/display/DOCS/Object+IDs 참조 ).
따라서 타임 스탬프는 다음과 같습니다.
timestamp = _id.toString().substring(0,8)
과
date = new Date( parseInt( timestamp, 16 ) * 1000 )
Mongo 2.2부터 변경되었습니다 ( http://docs.mongodb.org/manual/core/object-id/ 참조 ).
mongo 셸 내에서이 모든 작업을 한 단계로 수행 할 수 있습니다.
document._id.getTimestamp();
이것은 Date 객체를 반환합니다.
연습을 통해 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
find ()와 같은 예제 루프, 행 인쇄
> 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")
문자열에 대해서만 추가 필터링 :
> 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는 웹 스케일입니다.
다음은 모두를위한 빠른 PHP 기능입니다.)
public static function makeDate($mongoId) {
$timestamp = intval(substr($mongoId, 0, 8), 16);
$datum = (new DateTime())->setTimestamp($timestamp);
return $datum->format('d/m/Y');
}
에서 서버 측 메이크업 _id
MongoDB를 ObjectId가의
date = new Date( parseInt( _id.toString().substring(0,8), 16 ) * 1000 )
그리고 클라이언트 측 사용
var dateFromObjectId = function (objectId) {
return new Date(parseInt(objectId.substring(0, 8), 16) * 1000);
};
ReferenceURL : https://stackoverflow.com/questions/6452021/getting-timestamp-from-mongodb-id
'programing' 카테고리의 다른 글
ES2015 / ES6의 스프레드 구문 vs 나머지 매개 변수 (0) | 2021.01.16 |
---|---|
현재 디렉토리를 얻는 방법? (0) | 2021.01.16 |
LESS에서 if 문을 사용하는 방법 (0) | 2021.01.16 |
여러 구분 기호로 문자열 분할 (0) | 2021.01.16 |
양식 제출 jQuery가 작동하지 않습니다. (0) | 2021.01.16 |