[MONGODB] 나는 MongoDB를 ObjectId가 날짜별로 조회 할 수 있습니까?
MONGODB나는 MongoDB를 ObjectId가 날짜별로 조회 할 수 있습니까?
나는하며 Object 그들이에 생성 된 날짜를 포함하는 것을 알고있다. ObjectId가의 이러한 측면을 조회 할 수있는 방법이 있습니까?
해결법
-
==============================
1.훌륭한 세부 사항에 ObjectId가에 포함 된 날짜를 기준으로하며 Object 커버 쿼리에 타임 스탬프 터지는.
훌륭한 세부 사항에 ObjectId가에 포함 된 날짜를 기준으로하며 Object 커버 쿼리에 타임 스탬프 터지는.
자바 스크립트 코드에서 간단히 :
// This function returns an ObjectId embedded with a given datetime // Accepts both Date object and string input function objectIdWithTimestamp(timestamp) { // Convert string date to Date object (otherwise assume timestamp is a date) if (typeof(timestamp) == 'string') { timestamp = new Date(timestamp); } // Convert date object to hex seconds since Unix epoch var hexSeconds = Math.floor(timestamp/1000).toString(16); // Create an ObjectId with that hex timestamp var constructedObjectId = ObjectId(hexSeconds + "0000000000000000"); return constructedObjectId } // Find all documents created after midnight on May 25th, 1980 db.mycollection.find({ _id: { $gt: objectIdWithTimestamp('1980/05/25') } });
-
==============================
2.pymongo에서는이 방법을 수행 할 수 있습니다 :
pymongo에서는이 방법을 수행 할 수 있습니다 :
import datetime from bson.objectid import ObjectId mins = 15 gen_time = datetime.datetime.today() - datetime.timedelta(mins=mins) dummy_id = ObjectId.from_datetime(gen_time) result = list(db.coll.find({"_id": {"$gte": dummy_id}}))
-
==============================
3.Node.js를 년에 MongoDB를 드라이버에 의해 제공되는 붙박이 기능을 사용하면 임의의 타임 스탬프를 질의 할 수 있습니다 :
Node.js를 년에 MongoDB를 드라이버에 의해 제공되는 붙박이 기능을 사용하면 임의의 타임 스탬프를 질의 할 수 있습니다 :
var timestamp = Date.now(); var objectId = ObjectID.createFromTime(timestamp / 1000);
또한, 현재 시간 전에 기록을 검색, 당신은 간단하게 할 수 있습니다 :
var objectId = new ObjectID(); // or ObjectId in the mongo shell
출처 : http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html
-
==============================
4.ObjectId가의 첫 번째 4 바이트 타임 스탬프를 나타 내기 때문에, 연대순으로 컬렉션, ID로 간단하게 순서를 쿼리합니다 :
ObjectId가의 첫 번째 4 바이트 타임 스탬프를 나타 내기 때문에, 연대순으로 컬렉션, ID로 간단하게 순서를 쿼리합니다 :
# oldest first; use pymongo.DESCENDING for most recent first items = db.your_collection.find().sort("_id", pymongo.ASCENDING)
당신이 문서를 얻을 후, 당신은과 같이 ObjectId가의 생성 시간을 얻을 수 있습니다 :
id = some_object_id generation_time = id.generation_time
-
==============================
5.어떻게 (이 일이 최신 [2015년 1월 12일]를 [2015년 1월 15일]) 명령을 찾기 찾을 수 있습니다 :
어떻게 (이 일이 최신 [2015년 1월 12일]를 [2015년 1월 15일]) 명령을 찾기 찾을 수 있습니다 :
명령을 (이 날짜 [2015년 1월 15일]이 최신 [2015년 1월 12일을]) 개수 :
(이 날짜 [2015년 1월 15일]이 최신 [2015년 1월 12일을]) 명령을 제거합니다 :
-
==============================
6.당신은 4.0 버전부터 ObjectId가에서 날짜를 추출 $ 변환 기능을 사용할 수 있습니다.
당신은 4.0 버전부터 ObjectId가에서 날짜를 추출 $ 변환 기능을 사용할 수 있습니다.
같은 뭔가
$convert: { input: "$_id", to: "date" }
당신은 날짜의 시작 시간과 종료 시간 사이에 비교 날짜를 조회 할 수 있습니다.
db.collectionname.find({ "$expr":{ "$and":[ {"$gte":[{"$convert":{"input":"$_id","to":"date"}}, ISODate("2018-07-03T00:00:00.000Z")]}, {"$lte":[{"$convert":{"input":"$_id","to":"date"}}, ISODate("2018-07-03T11:59:59.999Z")]} ] } })
또는
당신은 사용할 수 속기 $ TODATE은 동일을 달성 할 수 있습니다.
db.collectionname.find({ "$expr":{ "$and":[ {"$gte":[{"$toDate":"$_id"}, ISODate("2018-07-03T00:00:00.000Z")]}, {"$lte":[{"$toDate":"$_id"},ISODate("2018-07-03T11:59:59.999Z")]} ] } })
-
==============================
7.내가 쉘에서 쿼리 아래 사용 몽고 컬렉션 지난 60 일 이전 문서를 얻으려면.
내가 쉘에서 쿼리 아래 사용 몽고 컬렉션 지난 60 일 이전 문서를 얻으려면.
db.collection.find({_id: {$lt:new ObjectId( Math.floor(new Date(new Date()-1000*60*60*24*60).getTime()/1000).toString(16) + "0000000000000000" )}})
-
==============================
8.당신이 범위 쿼리를 만들고 싶은 경우에, 당신은이 게시물처럼 그것을 할 수 있습니다. 특정 일 (즉, 4 월 4 2015)에 대한 예를 들어 쿼리의 경우 :
당신이 범위 쿼리를 만들고 싶은 경우에, 당신은이 게시물처럼 그것을 할 수 있습니다. 특정 일 (즉, 4 월 4 2015)에 대한 예를 들어 쿼리의 경우 :
> var objIdMin = ObjectId(Math.floor((new Date('2015/4/4'))/1000).toString(16) + "0000000000000000") > var objIdMax = ObjectId(Math.floor((new Date('2015/4/5'))/1000).toString(16) + "0000000000000000") > db.collection.find({_id:{$gt: objIdMin, $lt: objIdMax}}).pretty()
-
==============================
9.문서에서 :
문서에서 :
o = new ObjectId() date = o.getTimestamp()
이 방법 당신은 ISODate이다 날짜를 가지고있다.
보다 http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs#OptimizingObjectIDs-Extractinsertiontimesfromidratherthanhavingaseparatetimestampfield. 자세한 내용은
-
==============================
10.아래에 주어진 MongoObjectID를 사용하면 당신은 또한 결과를 찾을 수 있어야
아래에 주어진 MongoObjectID를 사용하면 당신은 또한 결과를 찾을 수 있어야
db.mycollection.find({ _id: { $gt: ObjectId("5217a543dd99a6d9e0f74702").getTimestamp().getTime()}});
from https://stackoverflow.com/questions/8749971/can-i-query-mongodb-objectid-by-date by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 어떻게 MongoDB를 문서의 _id를 업데이트? (0) | 2019.11.30 |
---|---|
[MONGODB] MongoDB를하고 "조인"[중복] (0) | 2019.11.30 |
[MONGODB] 몽구스 단일 Node.js를 프로젝트에서 여러 데이터베이스 (0) | 2019.11.30 |
[MONGODB] 몽구스 : findOneAndUpdate 업데이트 문서를 반환하지 않습니다 (0) | 2019.11.30 |
[MONGODB] db.collection MongoClient은 버전 3.0을 사용하여 함수가 아니다 (0) | 2019.11.30 |