Ho un enorme database MongoDB alimentato da mongoengine in cui gli oggetti hanno una data. Per semplificare il lavoro, voglio archiviare vecchi oggetti ma tenerli da qualche parte.Archivia i vecchi dati nella Monganera
Ho letto la documentazione e ho trovato switch_db
e switch_collection
. Tuttavia, non posso fare nessuno dei due lavori.
In entrambi i casi, la documentazione fa riferimento a due scenari di utilizzo.
Come operazione
QuerySet
:user = User.objects.get(id=user_id) user.switch_collection('old-users') user.save()
Il problema di questo è che funziona solo per un singolo oggetto. Non è possibile archiviare in batch più documenti.
Come
context_manager
:with switch_collection(Group, 'group1') as Group: Group(name="hello testdb!").save() # Saves in group1 collection
Usando questo non riesco nemmeno a fare la query, ottenendo il seguente errore:
ValidationError (Document:None) (Field is required...
Ho provato a cercare una via d' per archiviare i dati con mongoengine, ma nessuna delle opzioni sembra funzionare. Hai un suggerimento?
try messo: ' dai modelli import Doc' nel tuo script di archivio –
Grazie, dopo aver corretto quell'errore ne ricevo uno nuovo, credo di aver bisogno di collegarmi a un nuovo db ma non ho trovato nulla a riguardo nei documenti. – liarspocker
Hai provato a verificare se la linea di connessione ('doc-archive') sta raggiungendo correttamente mongodb? –