02-使用Java添加文档
12.1 使用Java添加文档
使用Java在集合中插入文档 在本节中,您将编写一个简单的Java应用程序,它使用DBCollection对象的方法insert()在示例数据库的一个集合中插入新文档。通过这个示例,您将熟悉如何使用Java来插入文档。程序清单12.1显示了这个示例的代码。 在这个示例中,方法main()连接到MongoDB数据库,获取一个DBCollection对象,并调用其他的方法来插入文档。方法showNewDocs()显示新插入到集合中的文档。 方法addSelfie()新建一个表示单词selfie的文档,并使用insert()将其加入到数据库中;方法addGoogleAndTweet()创建表示单词google和tweet的新文档,并使用insert()以数组的方式将它们插入数据库。 请执行下面的步骤,创建并运行这个在示例数据库中插入新文档并显示结果的Java应用程序。 1.确保启动了MongoDB服务器。 2.确保下载并安装了Java MongoDB驱动程序,并运行了生成数据库words的脚本文件code/hour05/generate_words.js。 3.在文件夹code/hour12中新建一个文件,并将其命名为JavaDocAdd.java。 4.在这个文件中输入程序清单12.1所示的代码。这些代码使用insert()来添加新文档。 5.将这个文件存盘。 6.打开一个控制台窗口,并切换到目录code/hour12。 7.执行下面的命令来编译这个新建的Java文件: 8.执行下面的命令来运行这个Java应用程序。程序清单12.2显示了这个应用程序的输出。 程序清单12.1 JavaDocAdd.java:在Java应用程序中将新文档插入到集合中 程序清单12.2 JavaDocAdd.java-output:在Java应用程序中将新文档插入到集合中的输出 ▲
在Java中与MongoDB数据库交互时,一项重要的任务是在集合中插入文档。要插入文档,首先要创建一个表示该文档的BasicDBObject对象。插入操作将BasicDBObject对象以BSON的方式传递给MongoDB服务器,以便能够插入到集合中。
有新文档的BasicDBObject版本后,就可将其存储到MongoDB数据库中,为此可对相应的DBCollection对象实例调用方法insert()。方法insert()的语法如下,其中参数docs可以是单个文档对象,也可以是一个文档对象数组:
insert(docs)
例如,下面的示例在集合中插入单个文档和一个文档数组:
BasicDBObject doc1 = new BasicDBObject("name", "Fred");
WriteResult result = myColl.insert(doc1);
BasicDBObject doc2 = new BasicDBObject("name", "George");
BasicDBObject doc3 = new BasicDBObject("name", "Ron");
WriteResult result = myColl.insert(new BasicDBObject[]{doc2, doc3});
请注意,方法insert()返回一个WriteResult对象,其中包含有关写入操作的信息。
▼ Try It Yourself
javac JavaDocAdd.java
java JavaDocAdd
01 import com.mongodb.MongoClient;
02 import com.mongodb.WriteConcern;
03 import com.mongodb.DB;
04 import com.mongodb.DBCollection;
05 import com.mongodb.DBObject;
06 import com.mongodb.BasicDBObject;
07 import com.mongodb.DBCursor;
08 import com.mongodb.WriteResult;
09 public class JavaDocAdd {
10 public static void main(String[] args) {
11 try {
12 MongoClient mongoClient = new MongoClient("localhost", 27017);
13 mongoClient.setWriteConcern(WriteConcern.JOURNAL_SAFE);
14 DB db = mongoClient.getDB("words");
15 DBCollection collection = db.getCollection("word_stats");
16 JavaDocAdd.showNewDocs(collection, "Before Additions");
17 JavaDocAdd.addSelfie(collection);
18 JavaDocAdd.showNewDocs(collection, "After adding single");
19 JavaDocAdd.addGoogleAndTweet(collection);
20 JavaDocAdd.showNewDocs(collection, "After adding mutliple");
21 } catch (Exception e) {
22 System.out.println(e);
23 }
24 }
25 public static void addSelfie(DBCollection collection){
26 BasicDBObject selfie = new BasicDBObject("word","selfie");
27 selfie.append("first", "s").append("last", "e");
28 selfie.append("size", 6).append("category", "New");
29 BasicDBObject stats = new BasicDBObject("consonants", 3);
30 stats.append("vowels", 3);
31 selfie.append("stats", stats);
32 selfie.append("letters", new String[]{"s","e","l","f","i"});
33 BasicDBObject cons = new BasicDBObject("type", "consonants");
34 cons.append("chars", new String[]{"s","l","f"});
35 BasicDBObject vowels = new BasicDBObject("type", "vowels");
36 vowels.append("chars", new String[]{"e","i"});
37 BasicDBObject[] charsets = new BasicDBObject[]{cons, vowels};
38 selfie.append("charsets", charsets);
39 WriteResult result = collection.insert(selfie);
40 System.out.println("Insert One Result: \n" + result.toString());
41 }
42 public static void addGoogleAndTweet(DBCollection collection){
43 //Create google Object
44 BasicDBObject google = new BasicDBObject("word","google");
45 google.append("first", "g").append("last", "e");
46 google.append("size", 6).append("category", "New");
47 BasicDBObject stats = new BasicDBObject("consonants", 3);
48 stats.append("vowels", 3);
49 google.append("stats", stats);
50 google.append("letters", new String[]{"g","o","l","e"});
51 BasicDBObject cons = new BasicDBObject("type", "consonants");
52 cons.append("chars", new String[]{"g","l"});
53 BasicDBObject vowels = new BasicDBObject("type", "vowels");
54 vowels.append("chars", new String[]{"o","e"});
55 BasicDBObject[] charsets = new BasicDBObject[]{cons, vowels};
56 google.append("charsets", charsets);
57 //Create tweet Object
58 BasicDBObject tweet = new BasicDBObject("word","tweet");
59 tweet.append("first", "t").append("last", "t");
60 tweet.append("size", 6).append("category", "New");
61 BasicDBObject tstats = new BasicDBObject("consonants", 3);
62 stats.append("vowels", 2);
63 tweet.append("stats", tstats);
64 tweet.append("letters", new String[]{"t","w","e"});
65 BasicDBObject tcons = new BasicDBObject("type", "consonants");
66 tcons.append("chars", new String[]{"t","w"});
67 BasicDBObject tvowels = new BasicDBObject("type", "vowels");
68 tvowels.append("chars", new String[]{"e"});
69 BasicDBObject[] tcharsets = new BasicDBObject[]{tcons, tvowels};
70 tweet.append("charsets", tcharsets);
71 //Insert object array
72 WriteResult result = collection.insert(
73 new BasicDBObject[]{google, tweet});
74 System.out.println("Insert Multiple Result: \n" +
75 result.toString());
76 }
77 public static void showNewDocs(DBCollection collection, String msg){
78 System.out.println("\n" + msg + ": ");
79 BasicDBObject query = new BasicDBObject("category", "New");
80 DBCursor cursor = collection.find(query);
81 while(cursor.hasNext()) {
82 DBObject doc = cursor.next();
83 System.out.println(doc);
84 }
85 }
86 }
Before Additions:
Insert One Result:
{ "serverUsed" : "localhost/127.0.0.1:27017" , "n" : 0 , "connectionId" : 35 ,
"err" : null , "ok" : 1.0}
After adding single:
{ "_id" : { "$oid" : "52e80bc4ba4191662131feea"} , "word" : "selfie" , "first" :
"s" ,
"last" : "e" , "size" : 6 , "category" : "New" ,
"stats" : { "consonants" : 3 , "vowels" : 3} ,
"letters" : [ "s" , "e" , "l" , "f" , "i"] ,
"charsets" : [ { "type" : "consonants" , "chars" : [ "s" , "l" , "f"]} ,
{ "type" : "vowels" , "chars" : [ "e" , "i"]}]}
Insert Multiple Result:
{ "serverUsed" : "localhost/127.0.0.1:27017" , "n" : 0 , "connectionId" : 35 ,
"err" : null , "ok" : 1.0}
After adding mutliple:
{ "_id" : { "$oid" : "52e80bc4ba4191662131feec"} , "word" : "tweet" , "first" : "t",
"last" : "t" , "size" : 6 , "category" : "New" , "stats" : { "consonants" : 3} ,
"letters" : [ "t" , "w" , "e"] ,
"charsets" : [ { "type" : "consonants" , "chars" : [ "t" , "w"]} ,
{ "type" : "vowels" , "chars" : [ "e"]}]}
{ "_id" : { "$oid" : "52e80bc4ba4191662131feea"} , "word" : "selfie" , "first" :
"s" ,
"last" : "e" , "size" : 6 , "category" : "New" ,
"stats" : { "consonants" : 3 , "vowels" : 3} ,
"letters" : [ "s" , "e" , "l" , "f" , "i"] ,
"charsets" : [ { "type" : "consonants" , "chars" : [ "s" , "l" , "f"]} ,
{ "type" : "vowels" , "chars" : [ "e" , "i"]}]}
{ "_id" : { "$oid" : "52e80bc4ba4191662131feeb"} , "word" : "google" , "first" :
"g" ,
"last" : "e" , "size" : 6 , "category" : "New" ,
"stats" : { "consonants" : 3 , "vowels" : 2} , "letters" : [ "g" , "o" , "l" ,
"e"] ,
"charsets" : [ { "type" : "consonants" , "chars" : [ "g" , "l"]} ,
{ "type" : "vowels" , "chars" : [ "o" , "e"]}]}