You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PyMongo的find_one获取匹配aws_account_id的最新记录

解决PyMongo find_one获取最后插入匹配文档的问题

你的问题核心是没指定排序规则,MongoDB默认会按文档的_id升序返回结果——而_id的ObjectId里包含了插入时间戳,升序意味着你拿到的是最早插入的匹配文档,这就是为什么返回了错误的那一个。

直接修改你的find_one调用,加上排序参数就能解决:

report = securitydb.scout.find_one(
    {'aws_account_id': aws_account.account_number},
    sort=[('_id', -1)]
)

这里的sort=[('_id', -1)]告诉MongoDB按_id降序排列结果,这样最新插入的文档会排在最前面,find_one就会返回你想要的那个红色标记的文档。

如果你在文档里有自定义的时间戳字段(比如created_at),用它来排序会更直观,效果完全一样:

report = securitydb.scout.find_one(
    {'aws_account_id': aws_account.account_number},
    sort=[('created_at', -1)]
)

最后小提醒:确认一下aws_account.account_number的类型和文档中aws_account_id的类型完全匹配(比如都是字符串,不要一个是数字一个是字符串),避免因为类型不匹配导致的隐性查询问题。

内容的提问来源于stack exchange,提问作者Robin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:26:55