Преобразование запроса pymon go из строки в двойную после конвейера - PullRequest
0 голосов
/ 14 апреля 2020

В настоящее время я выполняю запрос mongoDB, используя pyMon go, где я хочу вернуть содержимое массива, хранящегося в каждом объекте в базе данных, под именем «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 Ответ

0 голосов
/ 14 апреля 2020

Используйте оператор агрегационного конвейера $toDouble. Измените

'Trace' : {'$push': '$TR Trace'}

на

'Trace' : {'$push': {'$toDouble': '$TR Trace'}}

Также get_tr = get_tr.astype(np.float) не будет работать, так как aggregate() возвращает курсор для итерации.

...