2017-04-04 1 views
1

MongoDB에서 서브 필드에 projections을 수행 할 수 있습니다. 예를 들어 db.collection.find({},{"field.subfield":1, "_id":0})은 모든 문서를 반환하고 지정된 하위 필드 만 표시하며 출력에서 ​​다른 필드를 숨 깁니다.서브 필드 투영에 대한 PyMongo 지원

PyMongo는 프로젝션을 수행하지만 서브 필드에서는 작동하지 않습니다. 예제 코드는 아래와 같습니다.

from pymongo import MongoClient 
client = MongoDB() 
client.db.collection.find(projection=['field1','field2.subfield']) 

제 질문은 : PyMongo가 서브 필드 투영을 지원합니까? 그렇다면 올바른 구문은 무엇입니까? 나를 위해

+0

구문이 정확합니다. 문서의 예를 제공해주세요. – Dmitry

답변

1

작품 :

from pymongo import MongoClient 
client = MongoClient() 
client.db.collection.drop() 
client.db.collection.insert_one({ 
    'field1': 1, 
    'field2': { 
     'subfield': 'sub', 
     'othersubfield' : 'othersub' 
    } 
}) 

print(list(client.db.collection.find(projection=['field1','field2.subfield']))) 

이 지문 :

[{u'field2': {u'subfield': u'sub'}, u'field1': 1, u'_id': ObjectId('58e3d11dca1ce936cf6498c4')}] 

당신은이 투사에서 생략 되었기 때문에 "othersubfield"포함 하지 것을 관찰 할 수 있습니다.