2014-12-21 2 views
5

:Mongoexport -q ISODate 쿼리 나는이 실행하려고 해요

mongoexport.exe -h *MYHOST* -p *MYPORT* -q "{'time':{'$gte': ISODate('2014-12-21 12:57:00.506Z'),'$lt': ISODate('2014-12-21 12:59:00.506Z')}}" 

또는이합니다 (GTE & LT없이 - ') :

mongoexport.exe -h *MYHOST* -p *MYPORT* -q {'time':{$gte: ISODate('2014-12-21 12:57:00.506Z'),$lt: ISODate('2014-12-21 12:59:00.506Z')}} 

쿼리는 Robomongo에 잘 작동을하지만, mongoexport와 함께 : "너무 많은 위치 인수"

나는 다음과 같이 대신 실행할 수 있습니다. 그러나 쿼리를 실행할 때마다 날짜 변환기를 사용하고 싶지 않습니다.

mongoexport.exe -h *MYHOST* -p *MYPORT* -q "{'time':{$gte: new Date(14191 
66620506),$lt: new Date(1419166740506)}}" 

답변

9

mongoexport 쿼리는 엄격 모드 MongoDB 확장 JSON을 사용해야합니다. 확장 된 JSON에 대한 자세한 내용은 MongoDB Manual 기사 extended JSON에서 읽어 볼 수 있습니다. 특정 경우, mongoexport 명령에서 첫 번째 쿼리를 작성하는 적절한 방법은 내가 출발점으로 @의 wdberkeley의 답변을 사용하지만 특정 날짜의 문자열이 나를 위해 작동하지 않았다

mongoexport.exe -h *MYHOST* -p *MYPORT* -q "{ 'time' : { '$gte' : { '$date' : '2014-12-21 12:57:00.506Z' },'$lt' : { '$date' : '2014-12-21 12:59:00.506Z' } } }" 
+0

이 답변은 아직 유효합니까? ISODate 대신 문자열을 쿼리하면 결과가 반환되지 않는 것 같지만 ISODate ("") 생성자를 추가하면 결과가 mongo 셸에서 직접 반환됩니다. mongoexports에서 ISODate ("") (또는 JS Date 객체) 생성자를 추가하면 오류가 발생합니다. – netpoetica

+1

정상적으로 작동하지만 시간 소인이 매우 까다로울 수 있습니다. 에포크 시간은 밀리 초 및 iso 시간 (위와 같은 문자열)을 포함하도록 형식화되어야합니다. *는 마이크로 초를 포함해야합니다. – netpoetica

+0

또한 "2015-10-18T00 : 00 : 00Z00 : 00"과 같은 타임 스탬프를 쓰면 mongoexport가 추가 텍스트 : 00:00에 대해 불평 할 것입니다. – forgetso

3

입니다. 'T'를 사용하여 날짜와 시간을 구분해야합니다.

mongoexport --username user --password pass --host host --db dbName --collection coll --type=csv --query '{"_created_at": { "$gte" : { "$date" : "2017-12-21T12:57:00.506Z" } }}'