MongoDB批量插入– MongoDB insertMany
我们今天将研究MongoDB批量插入。
可以使用批量插入操作一次将多个文档插入MongoDB中,在该操作中,文档的数组作为参数传递给insert方法。
MongoDB批量插入
MongoDB批量插入默认情况下执行有序插入。
如果在插入过程中的某个点发生错误,则其余文档不会插入。
让我们看一个示例,该示例如何通过命令行使用mongodb批量插入来插入多个文档。
MongoDB插入许多文件
> db.car.insert( ... [ ... { _id:1,name:"Audi",color:"Red",cno:"H101",mfdcountry:"Germany",speed:75 }, ... { _id:2,name:"Swift",color:"Black",cno:"H102",mfdcountry:"Italy",speed:60 }, ... { _id:3,name:"Maruthi800",color:"Blue",cno:"H103",mfdcountry:"San Franceco",speed:70 }, ... { _id:4,name:"Polo",color:"White",cno:"H104",mfdcountry:"Japan",speed:65 }, ... { _id:5,name:"Volkswagen",color:"JetBlue",cno:"H105",mfdcountry:"Rome",speed:80 } ... ] ... ) BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 5, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
此操作插入了五个文档。
如果用户未在查询中指定MongoDB,则会自动创建一个id字段。
" nInserted"列告诉用户所插入文档的数量。
要查看插入的文档,请执行以下查询,如下所示。
> db.car.find() { "_id" : 1, "name" : "Audi", "color" : "Red", "cno" : "H101", "mfdcountry" : "Germany", "speed" : 75 } { "_id" : 2, "name" : "Swift", "color" : "Black", "cno" : "H102", "mfdcountry" : "Italy", "speed" : 60 } { "_id" : 3, "name" : "Maruthi800", "color" : "Blue", "cno" : "H103", "mfdcountry" : "San Franceco", "speed" : 70 } { "_id" : 4, "name" : "Polo", "color" : "White", "cno" : "H104", "mfdcountry" : "Japan", "speed" : 65 } { "_id" : 5, "name" : "Volkswagen", "color" : "JetBlue", "cno" : "H105", "mfdcountry" : "Rome", "speed" : 80 } >
阅读有关MongoDB查找和MongoDB插入操作的更多信息。
插入时,用户并非必须提供查询中的所有字段。
现在让我们看看未指定某些字段时插入的工作方式。
MongoDB批量插入文档,指定某些字段
> db.car.insert( ... [ ... { _id:6,name:"HondaCity",color:"Grey",cno:"H106",mfdcountry:"Sweden",speed:45 }, ... {name:"Santro",color:"Pale Blue",cno:"H107",mfdcountry:"Denmark",speed:55 }, ... { _id:8,name:"Zen",speed:54 } ... ] ... ) BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] }) >
在此示例中,对于第二个文档,用户未指定id字段,而对于第三个文档,查询中仅提供了id,name和speed字段。
即使第二个和第三个文档中缺少某些字段,查询也会成功插入。
nInserted列表示已插入三个文档。
调用查找方法并检查插入的文档。
> db.car.find() { "_id" : 1, "name" : "Audi", "color" : "Red", "cno" : "H101", "mfdcountry" : "Germany", "speed" : 75 } { "_id" : 2, "name" : "Swift", "color" : "Black", "cno" : "H102", "mfdcountry" : "Italy", "speed" : 60 } { "_id" : 3, "name" : "Maruthi800", "color" : "Blue", "cno" : "H103", "mfdcountry" : "San Franceco", "speed" : 70 } { "_id" : 4, "name" : "Polo", "color" : "White", "cno" : "H104", "mfdcountry" : "Japan", "speed" : 65 } { "_id" : 5, "name" : "Volkswagen", "color" : "JetBlue", "cno" : "H105", "mfdcountry" : "Rome", "speed" : 80 } { "_id" : 6, "name" : "HondaCity", "color" : "Grey", "cno" : "H106", "mfdcountry" : "Sweden", "speed" : 45 } { "_id" : ObjectId("54885b8e61307aec89441a0b"), "name" : "Santro", "color" : "Pale Blue", "cno" : "H107", "mfdcountry" : "Denmark", "speed" : 55 } { "_id" : 8, "name" : "Zen", "speed" : 54 } >
请注意,该ID由MongoDB自动为" Santro"汽车生成。
对于ID 8 –仅插入名称和速度字段。
插入无序文件
在执行无序插入时,如果在某个点发生错误,则mongodb会继续将其余文档插入数组中。
例如;
> db.car.insert( ... [ ... { _id:9,name:"SwiftDezire",color:"Maroon",cno:"H108",mfdcountry:"New York",speed:40 }, ... { name:"Punto",color:"Wine Red",cno:"H109",mfdcountry:"Paris",speed:45 }, ... ], ... { ordered: false } ... ) BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 2, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] }) >
在插入查询中指定了有序的false,指示它是无序的集合。
执行db.car.find()
{ "_id" : 1, "name" : "Audi", "color" : "Red", "cno" : "H101", "mfdcountry" : "Germany", "speed" : 75 } { "_id" : 2, "name" : "Swift", "color" : "Black", "cno" : "H102", "mfdcountry" : "Italy", "speed" : 60 } { "_id" : 3, "name" : "Maruthi800", "color" : "Blue", "cno" : "H103", "mfdcountry" : "San Franceco", "speed" : 70 } { "_id" : 4, "name" : "Polo", "color" : "White", "cno" : "H104", "mfdcountry" : "Japan", "speed" : 65 } { "_id" : 5, "name" : "Volkswagen", "color" : "JetBlue", "cno" : "H105", "mfdcountry" : "Rome", "speed" : 80 } { "_id" : 6, "name" : "HondaCity", "color" : "Grey", "cno" : "H106", "mfdcountry" : "Sweden", "speed" : 45 } { "_id" : ObjectId("54746407d785e3a05a1808a6"), "name" : "Santro", "color" : "Pale Blue", "cno" : "H107", "mfdcountry" : "Denmark", "speed" : 55 } { "_id" : 8, "name" : "Zen", "speed" : 54 } { "_id" : 9, "name" : "SwiftDezire", "color" : "Maroon", "cno" : "H108", "mfdcountry" : "New York", "speed" : 40 } { "_id" : ObjectId("5474642dd785e3a05a1808a7"), "name" : "Punto", "color" : "Wine Red", "cno" : "H109", "mfdcountry" : "Paris", "speed" : 45 }
插入文档,并且您可以看到,它是无序的插入。
如果insert方法遇到错误,则结果包括" WriteResult.writeErrors"字段,指示导致失败的错误消息。
插入重复的ID值
> db.car.insert({_id:6,name:"Innova"}) WriteResult({ "nInserted" : 0, "writeError" : { "code" : 11000, "errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: theitroad.car.$_id_ dup key: { : 6.0 }" } }) >
该错误表明我们正在插入ID为6的文档,该文档已经包含一个文档,因此对于ID为6的值将引发重复的键错误。
MongoDB Bulk.insert()方法
此方法批量执行插入操作。
从2.6版开始引入。
语法为Bulk.insert(<document>)
。
document:指定要插入的文档。
现在我们将看到批量插入的示例。
散装无序插入
> var carbulk = db.car.initializeUnorderedBulkOp(); > carbulk.insert({ name:"Ritz", color:"Grey",cno:"H109",mfdcountry:"Mexico",speed:62}); > carbulk.insert({ name:"Versa", color:"Magenta",cno:"H110",mfdcountry:"France",speed:68}); > carbulk.insert({ name:"Innova", color:"JetRed",cno:"H111",mfdcountry:"Dubai",speed:72}); > carbulk.execute(); BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] }) >
将创建一个名为carbulk的无序列表,并使用要插入的值字段指定插入查询。
请注意,有必要在最后一条insert语句之后调用execute()方法,以确保将数据实际插入到数据库中。
MongoDB批量有序插入
这类似于无序批量插入,但是我们使用" initializeOrderedBulkOp"调用。
>var car1bulk = db.car.initializeOrderedBulkOp(); >car1bulk.insert({ name:"Ertiga", color:"Red",cno:"H112",mfdcountry:"America",speed:65}); >car1bulk.insert({ name:"Quanta", color:"Maroon",cno:"H113",mfdcountry:"Rome",speed:78}); >car1bulk.execute(); BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 2, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
首先,我们创建一个名为carbulk1的汽车集合的有序列表,然后通过调用execute()方法插入文档。
MongoDB批量插入Java程序
让我们来看一个用于不同批量操作的Java程序,到目前为止,我们已经使用Shell命令看到了该程序。
以下是使用MongoDB Java驱动程序2.x版进行批量插入的Java程序。
package com.theitroad.mongodb; import com.mongodb.BasicDBObject; import com.mongodb.BulkWriteOperation; import com.mongodb.BulkWriteResult; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.MongoClient; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; public class MongoDBBulkInsert { //method that inserts all the documents public static void insertmultipledocs() throws UnknownHostException{ //Get a new connection to the db assuming that it is running MongoClient mongoClient = new MongoClient("localhost"); ////use test as a datbase,use your database here DB db=mongoClient.getDB("test"); ////fetch the collection object ,car is used here,use your own DBCollection coll = db.getCollection("car"); //create a new object DBObject d1 = new BasicDBObject(); //data for object d1 d1.put("_id", 11); d1.put("name","WagonR"); d1.put("color", "MetallicSilver"); d1.put("cno", "H141"); d1.put("mfdcountry","Australia"); d1.put("speed",66); DBObject d2 = new BasicDBObject(); //data for object d2 d2.put("_id", 12); d2.put("name","Xylo"); d2.put("color", "JetBlue"); d2.put("cno", "H142"); d2.put("mfdcountry","Europe"); d2.put("speed",69); DBObject d3 = new BasicDBObject(); //data for object d3 d3.put("_id", 13); d3.put("name","Alto800"); d3.put("color", "JetGrey"); d3.put("cno", "H143"); d3.put("mfdcountry","Austria"); d3.put("speed",74); //create a new list List<DBObject> docs = new ArrayList<>(); //add d1,d2 and d3 to list docs docs.add(d1); docs.add(d2); docs.add(d3); //insert list docs to collection coll.insert(docs); //stores the result in cursor DBCursor carmuldocs = coll.find(); //print the contents of the cursor try { while(carmuldocs.hasNext()) { System.out.println(carmuldocs.next()); } } finally { carmuldocs.close();//close the cursor } } //method that inserts documents with some fields public static void insertsomefieldsformultipledocs() throws UnknownHostException{ //Get a new connection to the db assuming that it is running MongoClient mongoClient = new MongoClient("localhost"); ////use test as a datbase,use your database here DB db=mongoClient.getDB("test"); ////fetch the collection object ,car is used here,use your own DBCollection coll = db.getCollection("car"); //create object d1 DBObject d1 = new BasicDBObject(); //insert data for name,color and speed d1.put("name","Indica"); d1.put("color", "Silver"); d1.put("cno", "H154"); DBObject d2 = new BasicDBObject(); //insert data for id,name and speed d2.put("_id", 43); d2.put("name","Astar"); d2.put("speed",79); List<DBObject> docs = new ArrayList<>(); docs.add(d1); docs.add(d2); coll.insert(docs); DBCursor carmuldocs = coll.find(); System.out.println("-----------------------------------------------"); try { while(carmuldocs.hasNext()) { System.out.println(carmuldocs.next()); } } finally { carmuldocs.close();//close the cursor } } //method that checks for duplicate documents public static void insertduplicatedocs() throws UnknownHostException{ //Get a new connection to the db assuming that it is running MongoClient mongoClient = new MongoClient("localhost"); ////use test as a datbase,use your database here DB db=mongoClient.getDB("test"); ////fetch the collection object ,car is used here,use your own DBCollection coll = db.getCollection("car"); DBObject d1 = new BasicDBObject(); //insert duplicate data of id11 d1.put("_id", 11); d1.put("name","WagonR-Lxi"); coll.insert(d1); DBCursor carmuldocs = coll.find(); System.out.println("-----------------------------------------------"); try { while(carmuldocs.hasNext()) { System.out.println(carmuldocs.next()); } } finally { carmuldocs.close();//close the cursor } } //method to perform bulk unordered list public static void insertbulkunordereddocs() throws UnknownHostException{ //Get a new connection to the db assuming that it is running MongoClient mongoClient = new MongoClient("localhost"); ////use test as a datbase,use your database here DB db=mongoClient.getDB("test"); ////fetch the collection object ,car is used here,use your own DBCollection coll = db.getCollection("car"); DBObject d1 = new BasicDBObject(); d1.put("name","Suzuki S-4"); d1.put("color", "Yellow"); d1.put("cno", "H167"); d1.put("mfdcountry","Italy"); d1.put("speed",54); DBObject d2 = new BasicDBObject(); d2.put("name","Santro-Xing"); d2.put("color", "Cyan"); d2.put("cno", "H164"); d2.put("mfdcountry","Holand"); d2.put("speed",76); //intialize and create a unordered bulk BulkWriteOperation b1 = coll.initializeUnorderedBulkOperation(); //insert d1 and d2 to bulk b1 b1.insert(d1); b1.insert(d2); //execute the bulk BulkWriteResult r1 = b1.execute(); DBCursor carmuldocs = coll.find(); System.out.println("-----------------------------------------------"); try { while(carmuldocs.hasNext()) { System.out.println(carmuldocs.next()); } } finally { carmuldocs.close();//close the cursor } } //method that performs bulk insert for ordered list public static void insertbulkordereddocs() throws UnknownHostException{ //Get a new connection to the db assuming that it is running MongoClient mongoClient = new MongoClient("localhost"); ////use test as a datbase,use your database here DB db=mongoClient.getDB("test"); ////fetch the collection object ,car is used here,use your own DBCollection coll = db.getCollection("car"); DBObject d1 = new BasicDBObject(); d1.put("name","Palio"); d1.put("color", "Purple"); d1.put("cno", "H183"); d1.put("mfdcountry","Venice"); d1.put("speed",82); DBObject d2 = new BasicDBObject(); d2.put("name","Micra"); d2.put("color", "Lime"); d2.put("cno", "H186"); d2.put("mfdcountry","Ethopia"); d2.put("speed",84); //initialize and create ordered bulk BulkWriteOperation b1 = coll.initializeOrderedBulkOperation(); b1.insert(d1); b1.insert(d2); //invoking execute BulkWriteResult r1 = b1.execute(); DBCursor carmuldocs = coll.find(); System.out.println("-----------------------------------"); try { while(carmuldocs.hasNext()) { System.out.println(carmuldocs.next()); } } finally { carmuldocs.close();//close the cursor } } public static void main(String[] args) throws UnknownHostException{ //invoke all the methods to perform insert operation insertmultipledocs(); insertsomefieldsformultipledocs(); insertbulkunordereddocs(); insertbulkordereddocs(); insertduplicatedocs(); } }
下面是上面程序的输出。
{ "_id" : 11 , "name" : "WagonR" , "color" : "MetallicSilver" , "cno" : "H141" , "mfdcountry" : "Australia" , "speed" : 66} { "_id" : 12 , "name" : "Xylo" , "color" : "JetBlue" , "cno" : "H142" , "mfdcountry" : "Europe" , "speed" : 69} { "_id" : 13 , "name" : "Alto800" , "color" : "JetGrey" , "cno" : "H143" , "mfdcountry" : "Austria" , "speed" : 74} ---------------------------------------------- { "_id" : 11 , "name" : "WagonR" , "color" : "MetallicSilver" , "cno" : "H141" , "mfdcountry" : "Australia" , "speed" : 66} { "_id" : 12 , "name" : "Xylo" , "color" : "JetBlue" , "cno" : "H142" , "mfdcountry" : "Europe" , "speed" : 69} { "_id" : 13 , "name" : "Alto800" , "color" : "JetGrey" , "cno" : "H143" , "mfdcountry" : "Austria" , "speed" : 74} { "_id" : { "$oid" : "548860e803649b8efac5a1d7"} , "name" : "Indica" , "color" : "Silver" , "cno" : "H154"} { "_id" : 43 , "name" : "Astar" , "speed" : 79} ---------------------------------------------- { "_id" : 11 , "name" : "WagonR" , "color" : "MetallicSilver" , "cno" : "H141" , "mfdcountry" : "Australia" , "speed" : 66} { "_id" : 12 , "name" : "Xylo" , "color" : "JetBlue" , "cno" : "H142" , "mfdcountry" : "Europe" , "speed" : 69} { "_id" : 13 , "name" : "Alto800" , "color" : "JetGrey" , "cno" : "H143" , "mfdcountry" : "Austria" , "speed" : 74} { "_id" : { "$oid" : "548860e803649b8efac5a1d7"} , "name" : "Indica" , "color" : "Silver" , "cno" : "H154"} { "_id" : 43 , "name" : "Astar" , "speed" : 79} { "_id" : { "$oid" : "548860e803649b8efac5a1d8"} , "name" : "Suzuki S-4" , "color" : "Yellow" , "cno" : "H167" , "mfdcountry" : "Italy" , "speed" : 54} { "_id" : { "$oid" : "548860e803649b8efac5a1d9"} , "name" : "Santro-Xing" , "color" : "Cyan" , "cno" : "H164" , "mfdcountry" : "Holand" , "speed" : 76} ---------------------------------- { "_id" : 11 , "name" : "WagonR" , "color" : "MetallicSilver" , "cno" : "H141" , "mfdcountry" : "Australia" , "speed" : 66} { "_id" : 12 , "name" : "Xylo" , "color" : "JetBlue" , "cno" : "H142" , "mfdcountry" : "Europe" , "speed" : 69} { "_id" : 13 , "name" : "Alto800" , "color" : "JetGrey" , "cno" : "H143" , "mfdcountry" : "Austria" , "speed" : 74} { "_id" : { "$oid" : "548860e803649b8efac5a1d7"} , "name" : "Indica" , "color" : "Silver" , "cno" : "H154"} { "_id" : 43 , "name" : "Astar" , "speed" : 79} { "_id" : { "$oid" : "548860e803649b8efac5a1d8"} , "name" : "Suzuki S-4" , "color" : "Yellow" , "cno" : "H167" , "mfdcountry" : "Italy" , "speed" : 54} { "_id" : { "$oid" : "548860e803649b8efac5a1d9"} , "name" : "Santro-Xing" , "color" : "Cyan" , "cno" : "H164" , "mfdcountry" : "Holand" , "speed" : 76} { "_id" : { "$oid" : "548860e803649b8efac5a1da"} , "name" : "Palio" , "color" : "Purple" , "cno" : "H183" , "mfdcountry" : "Venice" , "speed" : 82} { "_id" : { "$oid" : "548860e803649b8efac5a1db"} , "name" : "Micra" , "color" : "Lime" , "cno" : "H186" , "mfdcountry" : "Ethopia" , "speed" : 84} Exception in thread "main" com.mongodb.MongoException$DuplicateKey: { "serverUsed" : "localhost:27017" , "ok" : 1 , "n" : 0 , "err" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.car.$_id_ dup key: { : 11 }" , "code" : 11000} at com.mongodb.CommandResult.getWriteException(CommandResult.java:88) at com.mongodb.CommandResult.getException(CommandResult.java:79) at com.mongodb.DBCollectionImpl.translateBulkWriteException(DBCollectionImpl.java:314) at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:189) at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:165) at com.mongodb.DBCollection.insert(DBCollection.java:93) at com.mongodb.DBCollection.insert(DBCollection.java:78) at com.mongodb.DBCollection.insert(DBCollection.java:120) at com.theitroad.mongodb.MongoDBBulkInsert.insertduplicatedocs(MongoDBBulkInsert.java:163) at com.theitroad.mongodb.MongoDBBulkInsert.main(MongoDBBulkInsert.java:304)
如果您使用的是MongoDB Java驱动程序3.x,请使用以下程序。
package com.theitroad.mongodb.main; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; import org.bson.Document; import com.mongodb.MongoClient; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; public class MongoDBBulkInsert { public static void main(String[] args) throws UnknownHostException { //invoke all the methods to perform insert operation insertmultipledocs(); insertsomefieldsformultipledocs(); insertduplicatedocs(); } //method that inserts all the documents public static void insertmultipledocs() throws UnknownHostException { //Get a new connection to the db assuming that it is running MongoClient mongoClient = new MongoClient("localhost"); ////use test as a database,use your database here MongoDatabase db = mongoClient.getDatabase("test"); ////fetch the collection object ,car is used here,use your own MongoCollection<Document> coll = db.getCollection("car"); //create a new object Document d1 = new Document(); //data for object d1 d1.put("_id", 11); d1.put("name", "WagonR"); d1.put("color", "MetallicSilver"); d1.put("cno", "H141"); d1.put("mfdcountry", "Australia"); d1.put("speed", 66); Document d2 = new Document(); //data for object d2 d2.put("_id", 12); d2.put("name", "Xylo"); d2.put("color", "JetBlue"); d2.put("cno", "H142"); d2.put("mfdcountry", "Europe"); d2.put("speed", 69); Document d3 = new Document(); //data for object d3 d3.put("_id", 13); d3.put("name", "Alto800"); d3.put("color", "JetGrey"); d3.put("cno", "H143"); d3.put("mfdcountry", "Austria"); d3.put("speed", 74); //create a new list List<Document> docs = new ArrayList<>(); //add d1,d2 and d3 to list docs docs.add(d1); docs.add(d2); docs.add(d3); //insert list docs to collection coll.insertMany(docs); //stores the result in cursor FindIterable<Document> carmuldocs = coll.find(); for (Document d : carmuldocs) System.out.println(d); mongoClient.close(); } //method that inserts documents with some fields public static void insertsomefieldsformultipledocs() throws UnknownHostException { //Get a new connection to the db assuming that it is running MongoClient mongoClient = new MongoClient("localhost"); ////use test as a datbase,use your database here MongoDatabase db = mongoClient.getDatabase("test"); ////fetch the collection object ,car is used here,use your own MongoCollection<Document> coll = db.getCollection("car"); //create object d1 Document d1 = new Document(); //insert data for name,color and speed d1.put("name", "Indica"); d1.put("color", "Silver"); d1.put("cno", "H154"); Document d2 = new Document(); //insert data for id,name and speed d2.put("_id", 43); d2.put("name", "Astar"); d2.put("speed", 79); List<Document> docs = new ArrayList<>(); docs.add(d1); docs.add(d2); coll.insertMany(docs); FindIterable<Document> carmuldocs = coll.find(); System.out.println("-----------------------------------------------"); for (Document d : carmuldocs) System.out.println(d); mongoClient.close(); } //method that checks for duplicate documents public static void insertduplicatedocs() throws UnknownHostException { //Get a new connection to the db assuming that it is running MongoClient mongoClient = new MongoClient("localhost"); ////use test as a database, use your database here MongoDatabase db = mongoClient.getDatabase("test"); ////fetch the collection object ,car is used here,use your own MongoCollection<Document> coll = db.getCollection("car"); Document d1 = new Document(); //insert duplicate data of id11 d1.put("_id", 11); d1.put("name", "WagonR-Lxi"); coll.insertOne(d1); FindIterable<Document> carmuldocs = coll.find(); System.out.println("-----------------------------------------------"); for (Document d : carmuldocs) System.out.println(d); mongoClient.close(); } }