コードを使用してMongoDBのデータ型をpymongoに変更する方法(Python)

Aug 21 2020

csvファイルをベースにアップロードします。ただし、日付やその他の数値データは文字列として表示されます。フィールドタイプを変更する方法に関する情報はどこにもありません。例を書いてください)

ドキュメントはこのフォームの表にあります

{
    "_id": {
        "$oid": "5f3e76dfaca73bedb23ef8a1"
    },
    "Province/State": null,
    "Country/Region": "Afghanistan",
    "Lat": "33.93911",
    "Long": "67.709953",
    "Date": "2020-08-19",
    "Value": "37599",
    "ISO 3166-1 Alpha 3-Codes": "AFG",
    "Region Code": "142",
    "Sub-region Code": "34",
    "Intermediate Region Code": null
}

回答

D.SM Aug 21 2020 at 21:07

私の推測では、CSVファイルを解析すると、すべての値が文字列として取得されます。その後、それがデータベースに記録されることになります。

ほとんどの場合、CSVファイルから値をロードした後、MongoDBに挿入する前に、値を目的のタイプに手動でキャストする必要があります。

KonstantinIvanov Sep 01 2020 at 19:21
df = pd.read_csv(path, parse_dates=["Date"], dtype={"Lat": "double", "Value": "int32"}, skiprows=[1])
            df = df.fillna({"Region Code": 0, "Sub-region Code": 0, "Intermediate Region Code": 0})
            df = df.astype({"Region Code": int, "Sub-region Code": int, "Intermediate Region Code": int})