将pymongo查询从字符串转换为管道后的double

时间:2020-04-14 11:52:15

标签: python mongodb pymongo

我目前正在使用pyMongo运行mongoDB查询,在这里我想以“ 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 :(得分:0)

使用$toDouble聚合管道运算符。更改

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

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

get_tr = get_tr.astype(np.float)也不起作用,因为aggregate()返回用于迭代的游标。