2017-02-22 3 views
-2

내 가상 컴퓨터는 항상 쿼리에 대해 빈 포인터를 반환합니다. 서버 또는 코드에 문제가 있습니까?이 단순한 pymongo 코드의 문제점을 이해할 수 없습니다.

내 코드 :

Code

내 가상 머신 화면 :

자세한 내용은없이 virtual machine

+2

은 항상 질문에 형식화 된 코드를 포함하며 화면 캡처는 포함하지 않습니다. 다른 사람들이 디버깅을 시도하고 디버깅 할 수 있도록 도와줍니다. –

+0

http://api.mongodb.com/python/current/tutorial.html을 통해 스크롤하십시오 - 귀하의 질문에 답변 해 줄 것입니다. 특히 "두 개 이상의 문서 쿼리하기"섹션을보십시오. – wazy

+0

@wazy : 뭐가 잘못 보이니? 나는 udemy를 ​​따르고 있었다.co.kr에서 튜토리얼 비디오, 나는 비디오에서 남자와 똑같은 코드를 작성하려했습니다. 그러나 내가 달릴 때 결과를 얻지 못하고있다. –

답변

0

이 내가 코드에서 이해할 수있는 것입니다 : 당신은

있습니다 클라이언트 인스턴스화 :

client = pymongo.MongoClient(url) 

두 번째 스크린 샷이 주어지면이 방법이 효과적이라고 생각합니다. 당신은 당신의 클라이언트에 사용할 수있는 데이터베이스 중 하나 얻고있다

는 :

db = client["fullstack"] 

이 잠재적 인 문제가 될 수 있습니다. "fullstack"데이터베이스를 가지고 있습니까? 어쩌면 그것은 "fullStack"또는 이와 비슷한 것입니까?

기본적으로 "전체 스택"데이터베이스가없는 경우 mongo가 해당 데이터를 "생성"합니다 (이는 올바른 용어가 아닐 수도 있습니다). mongo 쉘에서 use fullstack을 수행하는 것과 같습니다. "fullstack"데이터베이스를 가지고 있으면 작동 할 것이고 데이터베이스와 상호 작용할 수 있지만이 데이터베이스에 아무 것도하지 않으면 연결을 끊으면 사라집니다.

컬렉션에 액세스하십시오.

collection = db["students"] 

다시 db와 동일한 문제가 발생합니다. "학생"이 아닌 "학생"인지 확인하십시오. 또한 실제로 기록이 있는지 확인하십시오.

내가 좋아하는 일을하고 조언을 것은 :

collection.insert_one({'test': 'record'})

이 당신이 실제로 뭔가를 가지고 있는지 확인하는 것입니다.

당신은 같은 것을 수행하여 나중에 그것을 제거 할 수 있습니다 :

collection.remove({'test': 'record'})

또한, 커서 반복하면 커서를 소모한다. 재사용 할 수있는 목록에서, 메모리에 모든 기록을 보관합니다

records = [record for record in collection.find({})] 

이 : 당신은 수백만 개의 레코드를 가지고 있지 않기 때문에, 당신은 뭔가를 할 수 있습니다.

희망이 도움이됩니다.