簡體   English   中英

如何在pymongo中使用find_one獲取最新記錄

[英]How fetch latest records using find_one in pymongo

我有一個現有的程序,我正在嘗試使用find_one中的find_one來獲取最后插入的文檔,該文檔與密鑰aws_account_id匹配。

我正在使用此查詢來執行提取:

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

但是此查詢返回錯誤的文檔。 下圖顯示了我得到的預期結果和錯誤的結果。

在此輸入圖像描述

在圖像中,兩個文檔都具有相同的aws_account_id,但最后插入了紅色文檔。 所以預期的結果是紅色標記的文件,但它拉出黃色標記的文件。

我不確定我是否需要使用排序或類似的東西。 我得到了一些解決方案,但這些都是基於純mongo查詢。 我需要幫助用pymongo這樣做。

謝謝提前,羅賓

*args使用sortfind_one()

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

在這里使用_id是因為ObjectId值在添加時總是會“增加”,但是只要它處於DESCENDING排序順序,就可以使用任何其他類似“日期”的東西,它也表示“最新”,這意味着“最新的“在結果的”頂部“。

如果您還沒有這樣做,可以import pymongo並使用pymongo.DESCENDING標記,或者只使用-1表示“降序”順序。 前者可能會提供更清晰的代碼。

另請注意“有序字典”,因為“排序”鍵的順序通常很重要,或者至少如果要對多個鍵的組合進行排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM