pymongo:如何从 mongodb 的字段中获取多个结果?

Posted

技术标签:

【中文标题】pymongo:如何从 mongodb 的字段中获取多个结果?【英文标题】:pymongo : How can I get multiple results from filed in mongodb? 【发布时间】:2019-02-11 15:44:06 【问题描述】:

我想用 python3 pymongo 获取由 'name' 创建的 'data' 项目中的每个 'ecg_raw'。

如果我知道 'name' 和 'time_info',我如何获得 4 个 ecg_raw 数据 which time_info == '2018-09-01 00:00:03'

我想获取每个 ecg_raw 数据,例如 [[8,2],[1,10],[9,4],[1,9]]

我试过了

db.g.find("data":"$elemMatch":"time_info":"2018-09-01 00:00:03","name":1,"data":"$elemMatch":"time_info":"2018-09-01 00:00:03")

但它只返回一个像底部这样的值。

'_id': ObjectId('5b90d401219e9c9f72cac8c4'), 'name': 'testDog3', 'data': ['time_info': '2018-09-01 00:00:03', 'ecg_raw': [8, 2]]

请帮帮我。

> db.g.find().pretty()

"_id" : ObjectId("5b90d401219e9c9f72cac8c4"),
"name" : "testDog3",
"data" : [
    
        "time_info" : "2018-09-01 00:00:03",
        "ecg_raw" : [
            8,
            2
        ]
    ,
    
        "time_info" : "2018-09-01 00:00:03",
        "ecg_raw" : [
            1,
            10
        ]
    ,
    
        "time_info" : "2018-09-01 00:00:03",
        "ecg_raw" : [
            9,
            4
        ]
    ,
    
        "time_info" : "2018-09-01 00:00:03",
        "ecg_raw" : [
            1,
            9
        ]
    ,
    
        "time_info" : "2018-09-01 00:00:04",
        "ecg_raw" : [
            10,
            6
        ]
    ,
    
        "time_info" : "2018-09-01 00:00:04",
        "ecg_raw" : [
            1,
            6
        ]
    
]

【问题讨论】:

【参考方案1】:

试试这个。

聚合([$match:'name':'testDog3', "$unwind": "$data" , "$match": "data.time_info":"2018-09 -01 00:00:03"])

【讨论】:

对不起。它在 db.g.aggregate("$match":"data.$.time_info":"2018-09-01 00:00: 03") 聚合([$match:'name':'testDog3', "$unwind": "$data" , "$match": "data.time_info" :"2018-09-01 00:00:03"]) 解决了。非常感谢你。

以上是关于pymongo:如何从 mongodb 的字段中获取多个结果?的主要内容,如果未能解决你的问题,请参考以下文章