Sto cercando di ottenere dizionari ordinati in Pymongo. Ho letto che può essere fatto con bson.son.Son. I documenti sono HereCome ottenere dizionari ordinati in pymongo?
Tuttavia, non riesco a farlo funzionare. Non c'è molto su google a riguardo. Ci sono alcune discussioni sulla configurazione di pymongo per dirle di usare gli oggetti SON ma senza esempi. Un amico suggerisce di passare un param quando fai una ricerca. Non riusciva a ricordare.
Sono in grado di creare oggetti SON. Ma quando vengono inseriti nel DB e poi tornano fuori, sono solo semplici dicts.
Non sono sicuro quale esempio di codice dare perché non so davvero da dove iniziare. Il frammento di seguito crea un oggetto SON vuoto ogni volta che aggiungo un nuovo utente. Anche l'oggetto 'sub_users' è stato creato con SON. Quando leggo il documento dell'account dal DB, sono solo normali dit pitone.
account['sub_users'][sub_user_name] = bson.SON()
with mongo_manager.Collection(CFG.db, 'Users') as users:
users.save(account)
Forse un parametro passato alla ricerca come questa da configurare? Questo era il suggerimento dei miei amici ma non riusciva a ricordare.
with mongo_manager.Collection(CFG.db, 'Users') as users:
account = users.find_one({'_id': _id, 'DOC':'OrderedDict})
Qualche idea?
Risposta stupenda. Grazie. –
+1 intelligente e utile – shx2
C'è qualche differenza nelle prestazioni tra l'uso di un 'OrderedDict' e un oggetto' SON'? Guardando le fonti ([qui] (https://github.com/mongodb/mongo-python-driver/blob/master/bson/son.py#L33) e [qui] (https://github.com) /python/cpython/blob/d4edfc9abffca965e76ebc5957a92031a4d6c4d4/Lib/collections/__init__.py)), entrambe sono sottoclassi di 'dict', ma' OrderedDict' ha un'implementazione C (con un Python puro come fallback) mentre 'SON' sembra avere solo un'implementazione Python ... –