私はpythonを使って行ごとにcvsファイルをトラバースしています。現在のレコードの2列とMongoDBの既存のレコードを比較する必要があります。存在しない場合はそれをmongoに挿入します。現在のレコードのすべてのフィールドをmongoDBの既存のレコードと比較する必要があり、現在のレコードが古いレコードの場所に挿入され、フィールド内の変更のみが同じ文書内のHistory jsonに保存されます。現在のレコードをPythonのMongoDBの既存のレコードと比較する
{
"_id" : ObjectId("59661c4d5e2bb8a9c80e74b8"),
"ID" : 149,
"UID" : "2017-06-01__ccm-401__238AC3E",
"Date" : "2017-06-01",
"Timestamp" : "2017-06-01 08:00:14",
"UCM" : "ccm-401",
"Description" : "SJC08-1-LOBBY",
"Site" : "SJC",
"Building" : "SJC08",
"Floor" : 1,
"Room_Name" : "LOBBY",
"MAC" : "SEP001DA238AC3E"
}
現在のレコード:MongoDBのレコードの既存
{
"ID" : 149,
"UID" : "2017-06-05__ccm-401__238AC3E",
"Date" : "2017-06-01",
"Timestamp" : "2017-06-01 08:00:14",
"UCM" : "ccm-402",
"Description" : "SJC08-1-LOBBY",
"Site" : "SSC",
"Building" : "SJC08",
"Floor" : 1,
"Room_Name" :"LOBBY",
"MAC" : "SEP001DA238AC3E"
}
ここで検証フィールドは、 "説明" と "MAC" です。現在のレコードのこれら2つのフィールドがMongoDBの既存のレコードと同じ場合、レコードの他のフィールドを比較する必要があります。この場合、差はIDであるには、UCM、サイトのフィールドは、そう...以下のような変化の辞書を維持する必要が
COLL {
'uid':
'mac':
'name':
'ip':
'status':
'date':
.
.
'config_history':
[
{
'date':
'status':
'ip':
.
.
},
{
'date':
'status':
'ip':
.
.
}
]
}
注:MongoDBは、リモートアクセスサーバーなので、ローカルマシン操作などの操作を行うことはできません
私は私はあなたがやろうとしているかを理解することを考えて...私の最高のrecommandationうあなたのCSVラインを辞書に変換してから、相違点を制御するために['deepdiff'](https://github.com/seperman/deepdiff)のようなものです。 – Fabien
こんにちはファビアン、おかげさまで、ご意見ありがとうございます...私は、Pythonとmongoに新しいです、あなたは私に詳細なコード構造を提供することができれば素晴らしいでしょう..事前に感謝 – ras