Se hai una vista in un database MongoDB che preferisci essere una raccolta, sei nel posto giusto.
Di seguito è riportato un esempio di conversione di una vista in una raccolta in MongoDB.
Esempio
Questo esempio mostra come convertire una vista in una raccolta utilizzando MongoDB Database Tools mongodump e mongorestore .
Se non hai installato questi strumenti, consulta la guida all'installazione di MongoDB.
Trova una vista
Per prima cosa, diamo un'occhiata alle viste e alle raccolte nel database corrente:
show collections Risultato:
employees owners pets system.views v_pettypes
In questo caso, v_pettypes è in realtà una vista.
Possiamo verificare che sia una vista con la seguente query:
db.getCollectionInfos( { "name": "v_pettypes"} ) Risultato:
[
{
"name" : "v_pettypes",
"type" : "view",
"options" : {
"viewOn" : "pets",
"pipeline" : [
{
"$group" : {
"_id" : "$type"
}
}
]
},
"info" : {
"readOnly" : true
}
}
]
Sappiamo che è una vista perché il type il campo ha un valore di view .
Converti la vista in una raccolta
Ora possiamo andare avanti e convertire quella vista in una raccolta. Possiamo farlo con MongoDB Database Tools mongodump e mongorestore .
Useremo mongodump per esportare la vista e mongorestore per ripristinarlo. In particolare, invieremo il mongodump flusso di output in mongorestore . In questo modo possiamo fare tutto in una volta.
Ecco il codice:
mongodump --archive --db=PetHotel --collection=v_pettypes --viewsAsCollections | mongorestore --archive --nsFrom='PetHotel.v_pettypes' --nsTo='PetHotel.pettypes'
Devi eseguire quel codice dalla riga di comando del tuo sistema (ad esempio una nuova finestra del terminale o del prompt dei comandi). Non eseguirlo da mongo guscio.
L'esecuzione di quel codice ha convertito i v_pettypes visualizza una raccolta denominata pettypes nella stessa banca dati.
A rigor di termini, in realtà non abbiamo convertito la visualizzazione di una raccolta. Abbiamo semplicemente usato --viewsAsCollections argomento per eseguire il dump della vista come raccolta, quindi è stata ripristinata la raccolta nel database. Pertanto la visione originale esiste ancora.
Quando esporti una vista come raccolta, mongodump produce un file BSON contenente i documenti nella vista. Se usi mongorestore per ripristinare il file BSON prodotto, la vista verrà ripristinata come raccolta.
Senza usare --viewsAsCollections argomento, mongodump esporta i metadati di ciascuna vista. Se includi il file di metadati di una vista in un mongorestore operazione, la vista viene ricreata.
Utilizzo di --viewsAsCollections omette anche tutte le raccolte standard.
Controlla i risultati
Diamo un'altra occhiata alle nostre visualizzazioni e raccolte.
show collections Risultato:
employees owners pets pettypes system.views v_pettypes
Quindi possiamo vedere che una nuova raccolta chiamata pettypes esiste e la vista originale esiste ancora.
Possiamo verificare che pettypes è una raccolta (e non una vista) come segue:
db.getCollectionInfos( { "name": "pettypes"} ) Risultato:
[
{
"name" : "pettypes",
"type" : "collection",
"options" : {
},
"info" : {
"readOnly" : false,
"uuid" : UUID("d183c7e4-44bc-4656-b272-7ad707f8dc62")
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
}
}
]
Possiamo vedere che il type il campo contiene un valore di collection , il che significa che è una raccolta.
Rilascia la vista originale
A questo punto abbiamo ora la possibilità di eliminare la vista originale o lasciarla lì.
Possiamo rilasciarlo in questo modo:
db.v_pettypes.drop() Ora, se controlliamo le raccolte, possiamo vedere che la vista originale è scomparsa e la nuova raccolta rimane.
show collections Risultato:
employees owners pets pettypes system.views