Ich versuche bestellte Wörterbücher in Pymongo. Ich habe gelesen, dass es mit bson.son.Son gemacht werden kann. Die Docs sind HereWie bestelle ich Wörterbücher in Pymongo?
Allerdings kann ich nicht scheinen, damit es funktioniert. Es gibt nicht viel über Google. Es gibt einige Diskussionen darüber, Pymongo zuerst zu konfigurieren, um SON-Objekte zu verwenden, aber keine Beispiele. Ein Freund schlug vor, einen Parameter zu übergeben, wenn Sie einen Fund machen. Er konnte sich nicht erinnern.
Ich bin in der Lage, die SON-Objekte zu erstellen. Aber wenn sie in die Datenbank eingefügt werden und dann wieder herauskommen, sind sie einfach nur Diktate.
Ich bin mir nicht sicher, welches Code-Beispiel ich Ihnen geben soll, weil ich wirklich nicht weiß, wo ich anfangen soll. Das folgende Snippet erstellt jedes Mal ein leeres SON-Objekt, wenn ich einen neuen Benutzer hinzufüge. Das Objekt 'sub_users' wurde ebenfalls mit SON erstellt. Wenn ich das Kontodokument aus der DB lese, sind das normale Python-Dicts.
account['sub_users'][sub_user_name] = bson.SON()
with mongo_manager.Collection(CFG.db, 'Users') as users:
users.save(account)
Vielleicht ein param Vergangenheit auf den finden Sie so konfigurieren? Das war der Vorschlag meiner Freunde, aber er konnte sich nicht erinnern.
with mongo_manager.Collection(CFG.db, 'Users') as users:
account = users.find_one({'_id': _id, 'DOC':'OrderedDict})
Irgendwelche Ideen?
Super Antwort. Vielen Dank. –
+1 clever und nützlich – shx2
Gibt es einen Unterschied in der Leistung zwischen einem 'OrderedDict' und einem' SON' Objekt? Schauen Sie sich die Quellen an ([hier] (https://github.com/mongodb/mongo-python-driver/blob/master/bson/son.py#L33) und [hier] (https://github.com /python/cpython/blob/d4edfc9abffca965e76ebc5957a92031a4d6c4d4/Lib/collections/__init__.py)), beide sind Unterklassen von 'dict', aber' OrderedDict' hat eine C-Implementierung (mit einer reinen Python-Eins als Fallback), während 'SON' erscheint nur eine Python-Implementierung zu haben ... –