如何使用PyMongo查询文档中的数组?

时间:2018-04-23 23:31:48

标签: mongodb python-3.x mongodb-query pymongo-3.x

我正在使用python 3.6和最新版本的mongod。 This is my data base.每个文档都被称为'模块'。

我正在尝试获取特定模块的所有message_log,这些模块具有特定的' des'值。

我试过这样的事情:

filter_param = {
'info.id': module_id,
'message_logs': {'$elemMatch': {'des': dev_id}}
}
proj_param = {
    'message_logs.$': 1,
    '_id': 0
}
try:
    return db.modules.find_one(filter_param, projection=proj_param)['message_logs']
except Exception:
    return "Unconfigured device"

但我只收到第一个匹配' des'。

的message_log

我还想知道如何获得最后一个匹配的元素而不是第一个匹配的元素。

1 个答案:

答案 0 :(得分:0)

您正在使用find_one,它只会获取找到的第一个结果。您应该使用find来获取所有结果。

即:

try:
    return db.modules.find(filter_param, projection=proj_param)['message_logs']
except Exception:
    return "Unconfigured device"