sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur kan jag importera data till Mongodb från Json-fil med java

Anta att du kan läsa respektive JSON-sträng. Till exempel läser du den första JSON-texten

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

och tilldela den till en variabel (String json1), nästa steg är att analysera den,

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

lägg alla dbo i en lista,

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

spara dem sedan i databasen:

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

EDIT:

I den senaste MongoDB-versionen måste du använda Documents istället för DBObject, och metoderna för att lägga till objektet ser annorlunda ut nu. Här är ett uppdaterat exempel:

Importer är:

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

Koden skulle vilja ha detta (med hänvisning till texten ovanför EDIT):

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

du kan också göra det på samma sätt med listan. men då behöver du

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

Men jag tror att det finns ett problem med den här lösningen. När du skriver:

db.collection.find()

i mongoskalet för att få alla föremål i samlingen ser resultatet ut som följande:

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

vilket inte är exakt samma som tidigare.



  1. Hur lagrar man i Redis sorterad uppsättning med tidsstämpel på serversidan som poäng?

  2. Mongoose-aggregat ger tomt resultat

  3. kafka-kontakt debezium mongodb CDC-uppdatering/$set-meddelande utan filter(_id-värde)

  4. Hur kan jag bläddra/visa värdena lagrade i Redis