В настоящее время я выполняю запрос mongoDB с использованием pyMongo, где я хочу вернуть содержимое массива, хранящегося в каждом объекте в базе данных, под именем «TR Trace». Однако данные в объекте JSON хранятся в виде строки, и мне нужно преобразовать ее в двойную, прежде чем вставлять в список, что я нахожу проблемным. Вот мой запрос:
pipeline = [{'$match':{"Timestamp":{'$gte':m(), '$lt':current()},
'Frequency Survey Reference':{'$regex':'Ch2'}}},
{'$group': {
'_id': '$Timestamp',
'Trace' : {'$push': '$TR Trace'}
}},
{'$sort': {'_id': -1}},
#{'$limit': 1}
]
get_tr = collection.aggregate(pipeline, allowDiskUse=True)
tr = list(get_tr)
Я попробовал это, чтобы выполнить преобразование, и получил соответствующую ошибку:
get_tr = get_tr.astype(np.float)
AttributeError: 'CommandCursor' object has no attribute 'astype'
И с тех пор я немного потерялся. Правильно ли я выполняю преобразование?
1 ответ
Используйте конвейер агрегирования $toDouble
оператор. Изменять
'Trace' : {'$push': '$TR Trace'}
К
'Trace' : {'$push': {'$toDouble': '$TR Trace'}}
Также get_tr = get_tr.astype(np.float)
не будет работать, поскольку aggregate()
возвращает курсор для итерации.
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.