2013-02-07 5 views
16

나는 다음과 같은 mongoexport 호출을 사용하여 내 MongoDB를에서 특정 일을 위해 만든 주문을 얻기 위해 노력하고 있어요 :Mongoexport

mongoexport --db store --collection user_data --query "{'order.created_order':{$gt:ISODate("2013-02-05T00:00:00.000Z"),$lt:ISODate("2013-02-06T00:00:00.000Z")}, 'order.status':'paid'}" --out ordersfeb6.json

을하지만 현재 경험하고 다음과 같은 오류 :

Thu Feb 7 18:33:43 Assertion: 10340:Failure parsing JSON string near: 'order.cre 
0x56a223 0x5712e5 0x53e0f7 0x53e21e 0x8b7739 0x524f2b 0x5258a3 0x7fa7b77bd76d 0x525975 
mongoexport(_ZN5mongo15printStackTraceERSo+0x23) [0x56a223] 
mongoexport(_ZN5mongo11msgassertedEiPKc+0xc5) [0x5712e5] 
mongoexport(_ZN5mongo8fromjsonEPKcPi+0x377) [0x53e0f7] 
mongoexport(_ZN5mongo8fromjsonERKSs+0xe) [0x53e21e] 
mongoexport(_ZN6Export3runEv+0x489) [0x8b7739] 
mongoexport(_ZN5mongo4Tool4mainEiPPc+0x72b) [0x524f2b] 
mongoexport(main+0x23) [0x5258a3] 
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7fa7b77bd76d] 
mongoexport() [0x525975] 
assertion: 10340 Failure parsing JSON string near: 'order.cre 

이 질문에 mongoexport JSON parsing error에서 나는 자바 스크립트가 몽고 쿼리의 일부를 평가하는 데 사용됩니다 것을 알고있다. 나는 궁금하네요 : $ gt 및 $ lt 연산자는 자바 스크립트가 필요하며 내 문제입니까? 그렇지 않은 경우 쿼리에 어떤 문제가 있는지 잘 모르겠습니다. 제안 사항에 크게 감사드립니다. 읽어 주셔서 감사합니다!

답변

51

여기에서 문제는 날짜를 나타내는 방법이며, Date 유형 및 기원 형식으로 전달되어야합니다. 대신이 시도 : 다음

> new Date(2013,01,16)*1 
1360990800000 

가 확인 :

> new Date(1360990800000) 
ISODate("2013-02-16T05:00:00Z") 

이 시대에 ISODate 변환하고자하는 경우
mongoexport --db store --collection user_data --query '{"order.created_order":{$gt:new Date(1360040400000),$lt:new Date(1360990800000)}, "order.status" : "paid"}' --out ordersfeb6.json 

, 그냥 쉘에서 이런 일을 날짜를 호출 업데이트 :imcaptor의 주석에서 언급했듯이 Date constru에서 0이 0 기준 (0 = 1 월, 11 = 12 월)입니다. ctor, 가장 기대하지 않을 것이고 잊기 쉽습니다. 위의 예에서 01로 넘어 갔고 검증에서 ISODate에서 볼 수 있듯이 2 월 날짜가 있습니다.

+0

도움 주셔서 감사합니다. 이것은 매우 유용했습니다. – Leah

+1

@ Adam. 답변 해주셔서 감사합니다. 질문의 제목을 $ lt $ gt 연산자와 반대되는 날짜를 처리하는 질문으로 변경하는 것이 적절합니까? 그럴 경우 귀하의 답변을 훨씬 빨리 발견했을 것입니다. –

+0

편집을 제안하는 것이 좋습니다. 검색 가능성이 더 높다고 생각한다면 어쩌면 $ lt 및 $ gt가이 질문에서 날짜 범위에 해당한다는 사실을 추가하십시오. –

관련 문제