programing

pymongo.cursor 변환 방법커서가 받아쓰기에 들어가나요?

magicmemo 2023. 3. 12. 10:40
반응형

pymongo.cursor 변환 방법커서가 받아쓰기에 들어가나요?

pymongo를 사용하여 지역 내 모든 항목을 조회합니다(실제로 지도상의 지역 내 모든 장소를 조회합니다).나는 사용했다db.command(SON())구면 영역에서 검색하기 전에, 그것은 나에게 사전을 돌려줄 수 있고 사전에는 사전이라고 불리는 키가 있다.results장소가 들어있어요.이제 사각지대를 검색해야 하는데, 이 경우db.places.find그러나, 이것은 나에게 반환한다.pymongo.cursor.Cursor수업도 그렇고 거기서 어떻게 결과를 끌어내야 할지 모르겠어요.

커서를 dict로 변환하여 결과를 추출해야 하는지, 아니면 다른 방법을 사용하여 사각 영역에 있는 항목을 쿼리해야 하는지 아는 사람이 있습니까?참고로 db는 pymongo.database입니다.데이터베이스 클래스

코드는 다음과 같습니다.

>>> import pymongo
>>> db = pymongo.MongoClient(host).PSRC 
>>> resp = db.places.find({"loc": {"$within": {"$box": [[ll_lng,ll_lat], [ur_lng,ur_lat]]}}})
>>> for doc in resp:
>>>     print(doc)

ll_lng, ll_lat, ur_lng 및 ur_lat 값이 있는데 이러한 값을 사용하지만 이 코드에서는 아무것도 출력되지 않습니다.

메서드는 일치하는 모든 문서에 대해 반복할 수 있는 인스턴스를 반환합니다.

지정된 기준과 일치하는 첫 번째 문서를 가져오려면 를 사용해야 합니다.의 결과find_one는 사전입니다.

언제든지 사용할 수 있습니다.list컨스트럭터: 컬렉션에 포함된 모든 문서 목록을 반환하지만, 모든 데이터가 메모리에 로드되고 원하는 데이터가 아닐 수 있다는 점에 유의하십시오.

커서를 재사용할 필요가 있고 사용하지 않을 이유가 있는 경우 이 작업을 수행해야 합니다.


를 사용한 데모find:

>>> import pymongo
>>> conn = pymongo.MongoClient()
>>> db = conn.test #test is my database
>>> col = db.spam #Here spam is my collection
>>> cur = col.find()  
>>> cur
<pymongo.cursor.Cursor object at 0xb6d447ec>
>>> for doc in cur:
...     print(doc)  # or do something with the document
... 
{'a': 1, '_id': ObjectId('54ff30faadd8f30feb90268f'), 'b': 2}
{'a': 1, 'c': 3, '_id': ObjectId('54ff32a2add8f30feb902690'), 'b': 2}

를 사용한 데모find_one:

>>> col.find_one()
{'a': 1, '_id': ObjectId('54ff30faadd8f30feb90268f'), 'b': 2}

만만하다

import pymongo
conn = pymongo.MongoClient()
db = conn.test #test is my database
col = db.spam #Here spam is my collection
array = list(col.find())

print(array)

여기 있습니다

나는 목록을 만들고 거기에 사전을 첨부할 것을 제안한다.

x   = []
cur = db.dbname.find()
for i in cur:
    x.append(i)
print(x)

x는 사전의 리스트이므로, 통상의 python 방법으로 조작할 수 있습니다.

MongoDBfindmethod는 단일 결과를 반환하는 것이 아니라 결과 목록을 반환하는 형식입니다.Cursor이 후자는 반복기이기 때문에 이 작업을 수행할 수 있습니다.for고리.

고객님의 경우에는findOne대신 방법find. 그러면 단일 문서가 사전으로 반환됩니다.

지도 기능은 큰 컬렉션을 빠르게 변환하는 방법입니다.

from time import time


cursor = db.collection.find()

def f(x):
    return x['name']

t1 = time()
blackset = set(map(f, cursor))
print(time() - t1)

to_dict() SON 문서를 일반 Python 사전 인스턴스로 변환합니다.

이것은 재귀적이어야 하기 때문에 단순히 dict(...)보다 더 까다롭다.

http://api.mongodb.org/python/current/api/bson/son.html

언급URL : https://stackoverflow.com/questions/28968660/how-to-convert-a-pymongo-cursor-cursor-into-a-dict

반응형