2016-11-30 2 views
1

PyMongo를 사용하고 MongoDB 컬렉션에서 10 백만 개의 문서를 반복하고 "name"과 "address"키를 추출한 다음 .csv 파일.Pymongo : 컬렉션의 모든 문서를 반복합니다.

나는 찾기와 함께 할 수있는 권리 구문을 알아낼 수 없습니다() 대해 forEach()

을 내가

같은 해결 방법을 시도하고 있었다
cursor = db.myCollection.find({"name": {$regex: REGEX}}) 

REGEX 모든 것을 일치 할 경우 -. 그리고 처치 "결과 ". 나는 또한 시도했다

cursor = db.myCollection.find({"name": {"$exist": True}}) 

그러나 작동하지 않았다.

제안 사항?

+0

실제 검색어 또는 원하는 결과는 무엇입니까? 조금 더 설명해주세요. – sergiuz

+0

잘 모르겠다면 map reduce 작업을 시도하여 작업을 완료하십시오. 거대한 데이터 세트를 고려할 때, 더 나은 선택 인 것으로 보인다. 그것의 다만 제안. – user1211

답변

1

내가 발견와 함께 할 수있는 권리 구문을 알아낼 수 없습니다(). 대해 forEach()는

cursor.forEach()은 자바 스크립트 함수의 파이썬 사용할 수 없습니다. 커서를 가져 와서 반복해야합니다. 당신이 할 수있는, PyMongo Tutorial: querying for more than one document를 참조하십시오

for document in myCollection.find(): 
    print(document) # iterate the cursor 

곳 REGEX 모든 것을 일치합니다 - 그것은 "사망"결과.

불행히도 왜 여기에 'Killed'가 무엇인지 디버깅 할 정보가 부족합니다. name은 문자열 값을 포함하는 필드 감안할 때

cursor = db.myCollection.find({"name": {$regex: /.*/}}) 

: 당신이, 당신이 할 수있는 단지 상태 다 일치 좋아하면 비록. 필드 name이 있는지 여부를 확인하기 위해 $exists을 사용하면 정규식을 사용하는 것보다 바람직합니다.

위의 예에서 $exists 연산자를 사용하는 것은 올바르지 않지만. $existss이 누락되었습니다. 다시 말하지만 불행하게도 우리는 디버깅을 돕기 위해 '작동하지 않는'것에 대한 많은 정보를 알지 못합니다. 당신은 파이썬 운동이 스크립트를 작성하는 경우

, 나는 검토하는 것이 좋습니다 것입니다 :

M101P: MongoDB for Python Developers.

그러나 컬렉션에서 CSV를 내보내는 작업을 수행하려는 경우에만 그렇습니다. 대안으로 MongoDB의 mongoexport을 사용할 수 있습니다.자세한 내용은 mongoexport usage를 참조 --query "..."

를 통해 쿼리를 특정 값을 내보내기 --type "csv"

  • 를 통해 CSV로 내보내기 --fields "name,address"
  • 를 통해 특정 필드를 내보내기

    • : 대한 지원을하고있다.