I am new to mongodb so need some help with export and import of mongodb data with nodejs.I have a mongodb database and some collections(eg product collection,formula collection and rules collection which have reference of product id) inside it, I want to export the data from different collections based on params of api request and generate file containing the corresponding data this file will be downloaded on client browser. The exported file can be used by the user to import exported data into another db instance.Have already searched on this topic and came acros this answer not sure if i can use mongoexport for my task. Any idea how can i do that.Any help or idea is greatly apreciated. Thanks in advance.
This code will read the documents from the MongoDB collection (the export functionality) and then writes to a file as JSON. This file is used to read (the import functionality) and insert the JSON into another collection. The code uses MongoDB NodeJS driver.
The Export:
Reads from the collection inCollection
based upon a supplied query, and writes to a file as JSON "out_file.json".
const MongoClient = require('mongodb').MongoClient;
const fs = require('fs');
const dbName = 'testDB';
const client = new MongoClient('mongodb://localhost:27017', { useUnifiedTopology:true });
client.connect(function(err) {
//assert.equal(null, err);
console.log('Connected successfully to server');
const db = client.db(dbName);
getDocuments(db, function(docs) {
console.log('Closing connection.');
client.close();
// Write to file
try {
fs.writeFileSync('out_file.json', JSON.stringify(docs));
console.log('Done writing to file.');
}
catch(err) {
console.log('Error writing to file', err)
}
});
}
const getDocuments = function(db, callback) {
const query = { }; // this is your query criteria
db.collection("inCollection")
.find(query)
.toArray(function(err, result) {
if (err) throw err;
callback(result);
});
};
The Import:
Reads the exported "out_file.json" file and inserts the JSON data in to the outCollection
.
client.connect(function(err) {
const db = client.db(dbName);
const data = fs.readFileSync('out_file.json');
const docs = JSON.parse(data.toString());
db.collection('outCollection')
.insertMany(docs, function(err, result) {
if (err) throw err;
console.log('Inserted docs:', result.insertedCount);
client.close();
});
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With