2011-11-14 3 views
8

partner collection 있고 데이터

검색 할 때 MongoDB 함께 컬렉션을 쿼리 할 때 다음 결과를 볼pymongo find()와 mongodb find(), pymongo find()는 문서에 대한 데이터가 적다.

db.partner.find({'unique_key': 'c89dbe313932008febde61cdd2a071a1d'},{}) 
{ "_id" : ObjectId("4eb463cb158acb554e8c9c11"), "unique_key" : "c89dbe313932008febde61cdd2a071a1d", "name" : "ABC", "primary_key" : 12 } 

xxx36 pymongo 통해 쿼리 할 때, 여기에 무엇입니까? 내가

for document in collection.find(find, criteria): 
    print document 

where find = {'unique_key': 'c89dbe313932008febde61cdd2a071a1d'} and 
     criteria = {} 

여기에 내가 결과에서 무엇을 볼 수 있습니다 :

{u'_id': ObjectId('4eb463cb158acb554e8c9c11')} 

그리고 이름 primary_key 결과에서, 내가 놓친 거지?

감사합니다

답변

12

당신이 빈 사전을 통과 할 때 보인다 (criteria 변수)를 두 번째 매개 변수로 사용하면 항상 반환되는 필드가 전혀 필요하지 않음을 의미합니다 (항상 반환되는 _id 제외). find()의 두 번째 매개 변수는 원하는 필드를 정의합니다. criteria=None을 설정하거나 criteria을 전달하지 않도록하십시오.

Linkfind()에 대한 pymongo 문서.

+0

완벽한 답변! – daydreamer

3

감사드립니다. 본질적으로 쉘은 빈 객체를 필드 선택 자로 무시하지만 pymongo는이를 "아무것도 반환하지 않습니다 (기본값은 _id 제외)"로 해석합니다.

pymongo 또는 mongodb 쉘을 사용할 때 필드 선택자를 지정할 필요가 없습니다 (공백으로두면됩니다). 따라서, 쉘에서이 문 :

db.partner.find({'unique_key': 'c89dbe313932008febde61cdd2a071a1d'},{}) 

에 해당합니다 :

db.partner.find({'unique_key': 'c89dbe313932008febde61cdd2a071a1d'}) 

(이 문은 쉘과 pymongo 모두에서 작동)

+0

멋진 설명을 주셔서 감사합니다 – daydreamer