복붙노트

[MONGODB] mongoexport JSON 구문 분석 오류

MONGODB

mongoexport JSON 구문 분석 오류

오류가 mongoexport 결과에 쿼리를 사용하려고합니다. 그러나 동일한 쿼리는 오류없이 몽고 클라이언트에 의해 평가된다.

몽고 클라이언트에서 :

db.listing.find({"created_at":new Date(1221029382*1000)})

와 mongoexport :

mongoexport -d event -c listing -q '{"created_at":new Date(1221029382*1000)}'

생성 된 오류 :

Fri Nov 11 17:44:08 Assertion: 10340:Failure parsing JSON string near: 
$and: [ { 
0x584102 0x528454 0x5287ce 0xa94ad1 0xa8e2ed 0xa92282 0x7fbd056a61c4 
0x4fca29 
mongoexport(_ZN5mongo11msgassertedEiPKc+0x112) [0x584102] 
mongoexport(_ZN5mongo8fromjsonEPKcPi+0x444) [0x528454] 
mongoexport(_ZN5mongo8fromjsonERKSs+0xe) [0x5287ce] 
mongoexport(_ZN6Export3runEv+0x7b1) [0xa94ad1] 
mongoexport(_ZN5mongo4Tool4mainEiPPc+0x169d) [0xa8e2ed] 
mongoexport(main+0x32) [0xa92282] 
/lib/libc.so.6(__libc_start_main+0xf4) [0x7fbd056a61c4] 
mongoexport(__gxx_personality_v0+0x3d9) [0x4fca29] 
assertion: 10340 Failure parsing JSON string near: $and: [ {

그러나 날짜에 곱셈을하고는 mongoexport에 사전 :

mongoexport -d event -c listing -q '{"created_at":new Date(1221029382000)}'

공장!

왜 몽고이 두 상황에서 다른 쿼리를 평가하고있다?

해결법

  1. ==============================

    1.mongoexport 명령 줄 유틸리티 JSON 형식의 쿼리를 통과 지원,하지만 당신은 당신의 쿼리에서 자바 스크립트를 평가하기 위해 노력하고 있습니다.

    mongoexport 명령 줄 유틸리티 JSON 형식의 쿼리를 통과 지원,하지만 당신은 당신의 쿼리에서 자바 스크립트를 평가하기 위해 노력하고 있습니다.

    JSON 형식은 원래 자바 스크립트의 객체 표기법에서 파생 된,하지만 JSON 문서의 내용은 자바 스크립트 인터프리터를 보내고 () 평가없이 구문 분석 할 수 있습니다.

    당신은 "실행 코드"로 "구조화 된 데이터"를 표현하고 자바 스크립트로 JSON을 고려해야합니다. 거기 그래서, 사실, 쿼리에 대한 두 개의 서로 다른 컨텍스트 당신은 실행하고 있습니다.

    몽고 명령 줄 유틸리티는 자바 스크립트 인터프리터뿐만 아니라 MongoDB를 사용하기위한 몇 가지 도우미 기능을 포함하는 대화 형 자바 스크립트 쉘입니다. 자바 스크립트 객체 형식은 JSON과 유사하지만, 당신은 또한 자바 스크립트 객체, 함수 호출 및 연산자를 사용할 수 있습니다.

    * 1000 1221029382 귀하의 예제는 몽고 쉘에있는 것을 실행 한 경우 자바 스크립트 인터프리터에 의해 실행된다 수학 연산의 결과입니다; JSON에 그것은 mongoexport는 "실패 JSON 문자열을 구문 분석"오류와 함께 종료되도록 새로운 날짜에 대한 잘못된 값입니다.

  2. ==============================

    2.나는 또한 mongoexport을하고이 오류를 얻었으나, 다른 이유. 나는 내 문제를 해결하기 위해 노력하는 동안이 SO 페이지에 결국 이후하지만 여기 내 솔루션을 공유 할 수 있습니다.

    나는 또한 mongoexport을하고이 오류를 얻었으나, 다른 이유. 나는 내 문제를 해결하기 위해 노력하는 동안이 SO 페이지에 결국 이후하지만 여기 내 솔루션을 공유 할 수 있습니다.

    나는이 질문과 거의가 알고 있지만,이 게시물의 제목은 그래서 동일한 오류가 발생 된 이후에 내가 대답을 추가 할 것입니다, 구글에 그것을 가져왔다. 희망이 사람을 도움이됩니다.

    나는 Windows 콘솔에서 MongoId _id 쿼리를하려고 노력했다. 문제는 내가 따옴표로 JSON 쿼리를 래핑 할 필요가 있다고했고, ObjectId가 또한 큰 따옴표로해야했다 (단일하지!). 그래서 ObjectId가 따옴표를 탈출했다.

    mongoexport -Ppassword -U 사용자 이름 -d -c 컬렉션 데이터베이스    --query "{_id : ObjectId가 (\"5148894d98981be01e000011 \ ")}"

    내가 Windows에서 따옴표에서 JSON 쿼리를 포장하는 경우,이 오류가 발생합니다 :

    ERROR: too many positional options
    

    내가 ObjectId가 주위에 작은 따옴표를 사용하는 경우, 나는이 오류가 발생합니다 :

    Assertion: 10340:Failure parsing JSON string near: _id
    

    그래, 좋아. 행운을 빕니다.

  3. from https://stackoverflow.com/questions/8098191/mongoexport-json-parsing-error by cc-by-sa and MIT license