Ho mongo db chiamato test
e in questo db due collezioni collection1
e collection1_backup
. Come sostituire il contenuto di collection1
con i dati da collection1_backup
.mongo copia da una collezione all'altra (sullo stesso db)
risposta
Il modo migliore per aver fatto questo (considerando il nome della collezione termina con _backup
) è eventualmente avere mongorestore usato: http://docs.mongodb.org/manual/reference/mongorestore/
Tuttavia in questo caso dipende. Se la raccolta è unsharded è possibile utilizzare renameCollection
(http://docs.mongodb.org/manual/reference/command/renameCollection/) oppure è possibile utilizzare un metodo più manuale (in codice JavaScript):
db.collection1.drop(); // Drop entire other collection
db.collection1_backup.find().forEach(function(doc){
db.collection1.insert(doc); // start to replace
});
Quelli sono i metodi più comuni di fare questo.
utile anche: per esportare la raccolta in un file JSON
mongoexport --collection collection1_backup --out collection1.json
di importare la raccolta da file JSON
mongoimport --db test --collection collection1 --file collection1.json
importare singola raccolta dal file di backup/dump di una necessità di convertire * .bson file in * .json utilizzando
bsondump collection1_backup.bson > collection1_backup.json
Uso del driver Java
Prova di sotto di un:
public void copyTo(String db,String sourceCollection,String destinationCollection,int limit) throws
UnknownHostException {
MongoClient mongo = new MongoClient("localhost", 27017);
DB database = mongo.getDB(db);
DBCollection collection = database.getCollection(sourceCollection);
DBCursor dbCursor = collection.find().limit(limit);
List<DBObject> list = dbCursor.toArray();
DBCollection destination = database.getCollection(destinationCollection);
destination.insert(list, WriteConcern.NORMAL); //WRITE CONCERN is based on your requirment.
}
Modo migliore sarebbe quella di utilizzare .toArray()
db.collection1.drop(); // Drop entire other collection
// creates an array which can be accessed from "data"
db.collection1_backup.find().toArray(function(err, data) {
// creates a collection and inserting the array at once
db.collection1.insert(data);
});
È possibile utilizzare il comando semplice per backup MongoDB Collezione
db.sourceCollectionName.copyTo('targetCollectionName')
Il tuo targetCollectionName deve essere in Single (') o Double (") Quota
Nota:
Il metodo db.collection.copyTo() utilizza internamente il comando eval. Come risultato di , l'operazione db.collection.copyTo() accetta un blocco globale che blocca tutte le altre operazioni di lettura e scrittura fino al completamento di db.collection.copyTo().
Questo non funziona con le raccolte Sharded, btw – oshaiken
- 1. istanze multiple di Mongo DB sullo stesso server
- 2. Mongo DB $ o query in PHP
- 3. Yii Utilizzo di mongo DB e MySQL allo stesso tempo
- 4. mongo intesa db spiegare
- 5. MONGO DB come operatore
- 6. Mongo Db and Spring
- 7. Mongo DB Invariante guasto
- 8. mongo db --smallfiles switch svantaggi
- 9. Come creare una copia dello schema completo sullo stesso database in Oracle
- 10. Lavorare con i caratteri speciali in una collezione Mongo
- 11. Leggere un file da una shell mongo
- 12. Campionamento casuale da Mongo
- 13. Mongo DB ordinamento Con case insensitive
- 14. mongo DB - Tutti i nodi secondari
- 15. mongo db design di seguito e feed, dove dovrei incorporare?
- 16. Come convertire un BasicDBObject in un documento Mongo con il driver Java Mongo DB versione 3?
- 17. Ordinamento su più campi mongo DB
- 18. Chiave esterna come relazione in Mongo DB
- 19. Il Mongo DB ha una modalità In-Memory?
- 20. Query di Mongo DB in java
- 21. Mongo DB relazioni tra gli oggetti
- 22. Mongo db - Interrogazione array nidificato e oggetti
- 23. cursore toperable in mongo db timing out
- 24. Come trovare documenti mongo con lo stesso campo
- 25. query su più database sullo stesso server
- 26. Accesso alla variabile java da javascript sullo stesso jsp
- 27. Come si usa pymongo per connettersi ad una collezione di documenti esistente/db?
- 28. Scrittura affidabile sullo stesso file da processi diversi
- 29. Meteor: trovare un oggetto da una collezione di _id
- 30. SQL Server - copia stored procedure da un db a altro
In generale è preferibile utilizzare 'mongodump' e' mongorestore' quando si copiano raccolte, poiché la conversione di documenti in JSON e ritorno può influire sulla [fedeltà del tipo di dati] (http://docs.mongodb.org/manual/amministrazione/import-export/# di dati di tipo fedeltà). Esistono alcuni tipi di dati che esistono in BSON che possono avere una [diversa rappresentazione in JSON] (http://www.mongodb.org/display/DOCS/Mongo+Extended+JSON) dove non esiste un equivalente JSON rigoroso. L'uso di 'mongoimport' /' mongoexport' può essere OK a seconda dei dati, ma questo è un avvertimento importante da tenere presente. – Stennie
@Stennie È anche importante notare che fare un mongodump/mongorestore preserverà gli indici. Quindi, se stai cercando di duplicare documenti tra collezioni, non sarai in grado di ripristinare. mongoexport e mongoimport devono essere utilizzati se si sta tentando di duplicare documenti tra raccolte. – ivandov
@ivandov È possibile saltare gli indici di ricreazione (a parte l'indice '_id' richiesto) con' mongorestore --noIndexRestore'. Si noti che 'mongorestore' (come in MongoDB 3.4) fa solo inserimenti; se esiste un documento con lo stesso '_id', non verrà aggiornato o sostituito. Lo strumento 'mongoimport' supporta gli upserts (e in 3.4, merges), ma funziona con i formati di testo piuttosto che con il formato BSON nativo di MongoDB. 'mongodump' e' mongorestore' sono ancora le opzioni raccomandate se si desidera ricreare i dati (e facoltativamente i metadati di raccolta) in modo identico tra le distribuzioni di MongoDB. – Stennie