[MONGODB] MongoDB를은 다음 몽고 쉘에서 ObjectId가에서 날짜 범위 쿼리를 수행
MONGODBMongoDB를은 다음 몽고 쉘에서 ObjectId가에서 날짜 범위 쿼리를 수행
나는 모습이 좋아하는 컬렉션이 있습니다 :
{
_id: ObjectId("50a68673476427844b000001"),
other fields
}
나는 두 날짜 사이에 기록을 찾을 수있는 범위 쿼리를 수행 할. 나는이 몽고 쉘 VAR이 일에 ObjectId가에서 날짜를 얻을 수 있다는 사실을 알고 :
var aDate = ObjectId().getTimestamp()
하지만 (나는 순간에 알아낼 수까지)하는 방법 단지 타임 스탬프 부분으로 구성된 ObjectId가를 만드는이 없다 - 나는 나의 이상적인 솔루션은 생각이 작동하지 않는 몽고 쉘 코드하는 것입니다 :
var minDate = ObjectId(new Date("2012-11-10"));
var maxDate = ObjectId(new Date("2012-11-17"));
범위의 값으로 minDate 및 MaxDate로 찾기를 사용합니다.
쉘이 할 수있는 방법이 있나요 - I 드라이버 제품의 일부에 관심이 아니에요.
해결법
-
==============================
1.당신은 2 단계에서이 작업을 수행 할 수 있습니다
당신은 2 단계에서이 작업을 수행 할 수 있습니다
var objIdMin = ObjectId(Math.floor((new Date('1990/10/10'))/1000).toString(16) + "000 0000000000000") var objIdMax = ObjectId(Math.floor((new Date('2011/10/22'))/1000).toString(16) + "000 0000000000000") db.myCollection.find({_id:{$gt: objIdMin, $lt: objIdMax}})
또는 1 단계 (무엇을 덜 읽을 수)에서 :
db.myCollection.find({_id:{$gt: ObjectId(Math.floor((new Date('1990/10/10'))/1000).toString(16) + "000 0000000000000"), $lt: ObjectId(Math.floor((new Date('2011/10/10'))/1000).toString(16) + "000 0000000000000")}})
-
==============================
2.몽고 쉘을 사용 :
몽고 쉘을 사용 :
당신은 방법에 내장 된 ObjectId.fromDate을 사용할 수 있습니다 :
db.mycollection.find({_id: {$gt: ObjectId.fromDate( new Date('2017-09-23') ) } });
Node.js를 드라이버에서 :
다음과 같이 여기 @jksdua가 제공하는 솔루션을 사용할 수 있습니다 :
db.mycollection.find({_id: {$gt: ObjectID.createFromTime( Date.now()/1000 ) } });
from https://stackoverflow.com/questions/13593896/mongodb-perform-a-date-range-query-from-the-objectid-in-the-mongo-shell by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 케이스 몽고에서 검색 문자를 구분 (0) | 2019.12.22 |
---|---|
[MONGODB] 날짜를 오늘에 의해 생성 된 결과를 찾을 수 MongoDB를 (0) | 2019.12.22 |
[MONGODB] MongoDB의의 열 가장 높은 값을 얻기 (0) | 2019.12.22 |
[MONGODB] MongoDB를에 수집 당 하나 이상의 스키마를 사용하여 (0) | 2019.12.22 |
[MONGODB] MongoDB를의 bind_ip은 설정하지 않으면 0.0.0.0으로 작동하지 않습니다 (0) | 2019.12.22 |