Je parcours le fichier cvs ligne par ligne en utilisant python. J'ai besoin de comparer 2 colonnes de l'enregistrement en cours avec les enregistrements existants dans MongoDB. S'il n'est pas présent, insérez-le dans mongo, sinon si; besoin de comparer tous les champs de l'enregistrement en cours avec l'enregistrement existant dans mongoDB et l'enregistrement en cours serait inséré à la place de l'ancien enregistrement et seules les modifications dans les champs seraient enregistrées dans l'historique json dans le même document.Comparer l'enregistrement actuel avec l'enregistrement existant MongoDB en Python
enregistrement existant dans 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"
}
Label actuel:
{
"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"
}
Voici les champs de validation sont "Description" et "MAC". Si ces deux champs de l'enregistrement en cours sont identiques à l'enregistrement existant dans MongoDB, il est nécessaire de comparer les autres champs de l'enregistrement. Dans cette différence de cas est en ID, UCM, champ du site, ont besoin afin de maintenir le dictionnaire des changements comme ci-dessous ...
COLL {
'uid':
'mac':
'name':
'ip':
'status':
'date':
.
.
'config_history':
[
{
'date':
'status':
'ip':
.
.
},
{
'date':
'status':
'ip':
.
.
}
]
}
Note: MongoDB est le serveur d'accès à distance, ne peut donc pas effectuer certaines opérations comme les opérations de la machine locale
Je pense que je comprends ce que vous essayez de faire ... Mon meilleur recommendation serait être de transformer votre ligne CSV en un dictionnaire, puis utiliser une libr ary comme ['deepdiff'] (https://github.com/seperman/deepdiff) pour contrôler quelles sont les différences. – Fabien
Salut Fabien, Merci pour vos suggestions ... je suis nouveau à python et mongo, ce serait génial si vous pouviez me fournir une structure de code détaillée .. Merci d'avance – ras