collection.find не возвращает никаких документов в dataframe - PullRequest
0 голосов
/ 03 мая 2018

Возникли некоторые проблемы с возвратом документов в фрейм данных из коллекции MongoDb. Код ниже устанавливает соединение с mongodb:

from pymongo import MongoClient
# Connect to the Mongo client. MongoClient is the connection to the MongoDB instance on port 27017 on host hkgdlvasfj001.
client = MongoClient('hkgdlvasfj001', 27017)
# Access the bb i.e. access a collection in PyMongo
#display(client.database_names()) # all the db's in the db i.e. ['admin', 'config', 'gtm', 'local']
# Assign gtm database 
db = client.gtm

Я могу успешно вернуть один документ из коллекции rfq:

#display(db.collection_names()) # all collections in the d b i.e ['rfqs', 'trades']                             
# Search for the documents you want
display(db.rfqs.find_one({'Data.State': "Done"}))

Output: 
{'Data': {'Action': 'DealerAcceptOrder',
      'AllQ': '3.09',
      'AutoNegDealerMidValue': '3.09',
      'AutoNegDealerSpread': '0',
      'AutoNegDealerValue': '3.0846',
      'ClearingChannel': '',
      'ClearingCode': 'UNKNOWN',
      'ClearingHouse': 'UNKNOWN',

Но когда я расширяю критерии, я не могу получить никаких документов из моего кадра данных

df = db.rfqs.find({'Data.State' : "Done",'Data.Ticker': "ACGB 3 3/4 04/21/37"})
display(df) 

Возвращает <pymongo.cursor.Cursor at 0x84dc3c8>

Есть ли что-то другое, что мне нужно сделать при назначении документов для рамки данных?

1 Ответ

0 голосов
/ 03 мая 2018

Это потому, что ваш find() возвращает более одного результата. Вот почему это pymongo.cursor.Cursor объект. Чтобы вернуть объект, попробуйте:

cursor= db.rfqs.find({'Data.State' : "Done",'Data.Ticker': "ACGB 3 3/4 04/21/37"})
df_list = list() # you can also create an empty dataframe here and concat the df to it later 
for doc in cursor:
    df_list.append(pd.DataFrame(doc))
    print(doc)

Для получения дополнительной информации прочитайте это .

...