如何在pymongo

时间:2018-04-17 06:10:47

标签: python mongodb pymongo

我有一个现有的程序,我试图在pymongo中使用aws_account_id获取与密钥find_one匹配的最后一个插入文档。

我使用此查询执行提取:

report = securitydb.scout.find_one({'aws_account_id': aws_account.account_number})

但是这个查询返回了一个错误的文档。下图显示了我预期的结果和错误的结果。

enter image description here

在图像中,两个文档都具有相同的aws_account_id,但最后插入了红色文档。所以预期的结果是红色标记的文件,但是它会拉出黄色标记的文件。

我不确定是否需要使用排序或类似的东西。我得到了一些解决方案,但这些都是基于纯mongo查询。我需要帮助用pymongo做这件事。

先谢谢, 罗宾

1 个答案:

答案 0 :(得分:8)

sort find_one()

中使用*args
report = securitydb.scout.find_one(
  {'aws_account_id': aws_account.account_number},
  sort=[( '_id', pymongo.DESCENDING )]
)

在此使用_id,因为ObjectId值总是会增加"增加"因为他们被添加,但其他任何东西,如" date"这也表明"最新"只要它在DESCENDING排序顺序中就可以使用,这意味着"最新的"在"顶部"结果。

您可import pymongo如果您还没有这样做并使用pymongo.DESCENDING令牌,或只是-1来表示"降序"订购。前者可能会提供更清晰的代码。

还要注意"有序的字典"由于"排序"的键的顺序通常很重要,或者至少如果你想对多个键的组合进行排序。