我正在使用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我还想知道如何获得最后一个匹配的元素而不是第一个匹配的元素。
答案 0 :(得分:0)
您正在使用find_one
,它只会获取找到的第一个结果。您应该使用find
来获取所有结果。
即:
try:
return db.modules.find(filter_param, projection=proj_param)['message_logs']
except Exception:
return "Unconfigured device"