簡體   English   中英

如何使用pymongo從mongodb的日期值獲取json輸出

[英]How do I get json output from a date value from mongodb using pymongo

我定期收集股市數據,並使用pymongo將其存儲在mongodb中,如下所示:

db.apple_stock.insert({'time': datetime.datetime.utcnow(), 'price': price})

現在我想要JSON格式的輸出,以便可以使用highstocks:

[
    [1403546401372, 343], 
    [1403560801637, 454], 
    [1403575202199, 345], 
    [1403618402379, 345]
]

Tornado在服務器上運行,並且“ mysite.com/api/stock.json”應在JSON文件中提供上述數據。

所以,我查詢我的數據庫,並使用pymongo的json_util轉儲到json中:

from bson.json_util import dumps
dumps(query_result)

我得到的輸出為:

[
    [{"$date": 1403546401372}, 343], 
    [{"$date": 1403560801637}, 454], 
    [{"$date": 1403575202199}, 353]]
]

那么,如何將第一項從字典更改為僅包含值部分的日期呢? 有可用的功能嗎?還是我必須遍歷列表並自己進行轉換?

其次,如果我真的必須迭代該列表,那么在MongoDB中存儲以便直接獲得所需輸出的正確方法是什么?

pymongo驅動程序實用程序中有意提供dumps功能,以提供所謂的擴展JSON格式

這樣做的目的是在JSON本身不了解嚴格的“類型”(例如BSON格式需要什么以及MongoDB本身使用什么)的情況下提供“類型保真度”。 它允許將JSON傳輸到“可能”能夠理解所呈現“類型”的客戶端,例如“ $ date”或“ $ oid”,然后使用這些鍵將JSON“反序列化”為特定的“語言規范中的“類型”。

在大多數語言實現中,使用標准形式的JSON編碼會發現“否則”:

  • 時間值有趣的元組
  • 代表時間值的字符串
  • 代表時間值的時代時間戳記

“自定義序列化”的最佳情況是迭代返回的結構並自己實現類型的序列化。 或僅將dumps形式與JSON的“解碼”一起使用,然后刪除標識“類型”的那些“鍵”。

或者,當然也可以在特殊庫之外使用基本的JSON編碼,並獲得結果。

導致這種情況的正確BSON日期類型是在MongoDB中存儲的“正確”方式。 庫功能的用法是“根據設計”。 但是,最終使用方法實際上取決於您自己。

暫無
暫無

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

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