0
我使用python逐行遍歷cvs文件。我需要將當前記錄的2列與MongoDB中的現有記錄進行比較。如果不存在,則將其插入到mongo中,否則如果;需要將當前記錄的所有字段與mongoDB中的現有記錄進行比較,並且將當前記錄插入舊記錄的位置,並且只有字段中的更改纔會保存在同一文檔的歷史記錄json中。 MongoDB中將當前記錄與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"
}
當前記錄:
{
"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」。如果當前記錄的這兩個字段與MongoDB中的現有記錄相同,則需要比較記錄的其他字段。在這種情況下,不同的是在ID,UCM,網站領域,因此需要保持類似下面的變化字典...
COLL {
'uid':
'mac':
'name':
'ip':
'status':
'date':
.
.
'config_history':
[
{
'date':
'status':
'ip':
.
.
},
{
'date':
'status':
'ip':
.
.
}
]
}
注:MongoDB是遠程訪問服務器,所以無法做到像本地機器上操作的操作
我想我明白你正在嘗試做的......我最好的recommandation會將您的CSV行轉換爲字典,然後使用libr像['deepdiff'](https://github.com/seperman/deepdiff)來控制有什麼區別。 – Fabien
嗨Fabien,感謝你的建議...我是新的python和mongo,如果你能提供給我詳細的代碼結構,那將是非常棒的。 – ras