MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come posso importare dati su Mongodb dal file Json usando java

Supponiamo di poter leggere rispettivamente la stringa JSON. Ad esempio, leggi il primo testo JSON

{ "test_id" : 1245362, "name" : "ganesh", "age" : "28", "Job" : 
   {"company name" : "company1", "designation" : "SSE" } 
}

e assegnarlo a una variabile (String json1), il passaggio successivo è analizzarlo,

DBObject dbo = (DBObject) com.mongodb.util.JSON.parse(json1);

inserisci tutti i dbo in un elenco,

List<DBObject> list = new ArrayList<>();
list.add(dbo);

quindi salvali nel database:

new MongoClient().getDB("test").getCollection("collection").insert(list);

MODIFICA:

Nella versione più recente di MongoDB devi usare Documents invece di DBObject e i metodi per aggiungere l'oggetto ora sembrano diversi. Ecco un esempio aggiornato:

Le importazioni sono:

import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

Il codice vorrebbe questo (riferendosi al testo sopra l'EDIT):

Document doc = Document.parse(json1);
new MongoClient().getDataBase("db").getCollection("collection").insertOne(doc);

puoi anche farlo in questo modo con l'elenco. ma poi hai bisogno

new MongoClient().getDataBase("db").getCollection("collection").insertMany(list);

Ma penso che ci sia un problema con questa soluzione. Quando digiti:

db.collection.find()

nella mongo shell per ottenere tutti gli oggetti nella raccolta, il risultato è simile al seguente:

{ "_id" : ObjectId("56a0d2ddbc7c512984be5d97"),
    "test_id" : 1245362, "name" : "ganesh", "age" : "28", "Job" :
        { "company name" : "company1", "designation" : "SSE" 
    }
}

che non è esattamente la stessa di prima.