当前位置:嗨网首页>书籍在线阅读

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"]}]}