MongoDB 3.0 速上手教程(JAVA)

just_now 9年前

来自: http://jcs130.iteye.com/blog/2236163


最近做项目想用一下NoSQL数据库,由于项目需要保存大量的json数据,我就选了MongoDB作为我的数据库。

最新版为3.0 下载安装都很容易,今天按照教程一步一步实现了增删改查等工作,本文将把要用到的代码都贴上来而且都做好中文注释方便大家阅读。

过程中发现两处不能使用教程中的代码实现的地方,经过查资料已经用另外的方法实现了,不知道是不是叫承重的代码出错了还是什么原因,如果有知道的朋友请留言告诉我,多谢~

 

官方教程链接:http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/

 

如果不用maven附件中提供了已经下好的java驱动

 

package com.zhongli.推terGetter.app;    import java.util.*;    import org.bson.Document;  import org.bson.conversions.Bson;    import com.mongodb.BasicDBObject;  import com.mongodb.Block;  import com.mongodb.MongoClient;  import com.mongodb.client.*;  import com.mongodb.client.model.BulkWriteOptions;  import com.mongodb.client.model.DeleteOneModel;  import com.mongodb.client.model.InsertOneModel;  import com.mongodb.client.model.ReplaceOneModel;  import com.mongodb.client.model.UpdateOneModel;  import com.mongodb.client.result.DeleteResult;  import com.mongodb.client.result.UpdateResult;    import static com.mongodb.client.model.Filters.*;    /**   * 程序入口   *    * @author John   *   */  public class testmain {   public static void main(String[] args) {    testmain tm = new testmain();    tm.test();   }     /**    * test    */   private void test() {    // 获取链接    MongoClient mongoClient = new MongoClient("localhost", 27017);    // 获取数据库    MongoDatabase database = mongoClient.getDatabase("mydb");    // 进入某个文档集    MongoCollection<Document> collection = database.getCollection("test");      /********************** 数据插入 ****************************/    // // 创建新文档    // Document doc = new Document("name", "MongoDB")    // .append("type", "database").append("count", 1)    // .append("info", new Document("x", 203).append("y", 102));    // // 将文档插入文档集合    // collection.insertOne(doc);    //    // // 创建一个包含多个文档的列表    // List<Document> documents = new ArrayList<Document>();    // for (int i = 0; i < 100; i++) {    // documents.add(new Document("i", i));    // }    // // 向文档中插入列表    // collection.insertMany(documents);      /***************** 数据读取 ****************************************/    // // 显示集合中的文档的数量    // System.out.println(collection.count());    //    // // 查询集合中的第一个文档    // Document myDoc = collection.find().first();    // System.out.println(myDoc.toJson());    //    // //获取集合中的全部文档    // MongoCursor<Document> cursor = collection.find().iterator();    // try {    // while (cursor.hasNext()) {    // System.out.println(cursor.next().toJson());    // }    // } finally {    // cursor.close();    // }      // //获取全部文档的另一种方法    // for (Document cur : collection.find()) {    // System.out.println(cur.toJson());    // }      // // 根据条件获取某分文档 eq:==    // Document myDoc = collection.find(eq("i", 71)).first();    // System.out.println(myDoc.toJson());      // 通过查询语句一次性获取多个数据    // Block<Document> printBlock = new Block<Document>() {    // @Override    // public void apply(final Document document) {    // System.out.println(document.toJson());    // }    // };    // 获得所有大于50的    // collection.find(gt("i", 50)).forEach(printBlock);    // 大于50 小于 100    // collection.find(and(gt("i", 50), lte("i", 100))).forEach(printBlock);      // 对输出文档进行排序,-1为递减,1为递增    // 官方文档的例子有误:http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/#sorting-documents    // Document myDoc = collection.find(exists("i"))    // .sort(new BasicDBObject("i", -1)).first();    // System.out.println(myDoc.toJson());      // 选择性输出结果中的元素,0为不显示,1为显示    // 官方文档中的例子又不能用:http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/#projecting-fields    // BasicDBObject exclude = new BasicDBObject();    // exclude.append("_id", 0);    // // exclude.append("count", 0);    // exclude.append("name", 1);    // exclude.append("info", 1);    // Document myDoc = collection.find().projection(exclude).first();    // System.out.println(myDoc.toJson());      /************************* 修改数据库中数据 *************************************/      // 修改时的参数:    // $inc 对指定的元素加    // $mul 乘    // $rename 修改元素名称    // $setOnInsert 如果以前没有这个元素则增加这个元素,否则不作任何更改    // $set 修改制定元素的值    // $unset 移除特定的元素    // $min 如果原始数据更大则不修改,否则修改为指定的值    // $max 与$min相反    // $currentDate 修改为目前的时间      // //修改第一个符合条件的数据    // $set 为修改    // collection.updateOne(eq("i", 10), new Document("$set", new    // Document("i", 110)));    // // 获取全部文档,可以看到以前10的地方变成了110    // for (Document cur : collection.find()) {    // System.out.println(cur.toJson());    // }      // 批量修改数据并且返回修改的结果,讲所有小于100的结果都加100    // UpdateResult updateResult = collection.updateMany(lt("i", 100),    // new Document("$inc", new Document("i", 100)));    // // 显示发生变化的行数    // System.out.println(updateResult.getModifiedCount());    // // 获取全部文档,可以看到除了刚才修改的110其他的全为了100    // for (Document cur : collection.find()) {    // System.out.println(cur.toJson());    // }      /************************** 删除数据 *****************************/    // 删除第一个符合条件的数据    // collection.deleteOne(eq("i", 110));    // // 获取全部文档,可以看到没有110这个数了    // for (Document cur : collection.find()) {    // System.out.println(cur.toJson());    // }      // 删除所有符合条件的数据,并且返回结果    // DeleteResult deleteResult = collection.deleteMany(gte("i", 100));    // // 输出删除的行数    // System.out.println(deleteResult.getDeletedCount());    // // 获取全部文档,所有i>=100的数据都没了    // for (Document cur : collection.find()) {    // System.out.println(cur.toJson());    // }    /*************************** 程序块,一次执行多条语句 ********************************/    // 按照语句先后顺序执行    // collection.bulkWrite(Arrays.asList(new InsertOneModel<>(new Document(    // "_id", 4)), new InsertOneModel<>(new Document("_id", 5)),    // new InsertOneModel<>(new Document("_id", 6)),    // new UpdateOneModel<>(new Document("_id", 1), new Document(    // "$set", new Document("x", 2))), new DeleteOneModel<>(    // new Document("_id", 2)),    // new ReplaceOneModel<>(new Document("_id", 3), new Document(    // "_id", 3).append("x", 4))));    // // 获取全部文档    // for (Document cur : collection.find()) {    // System.out.println(cur.toJson());    // }      // 不按照语句先后顺序执行    // collection.bulkWrite(Arrays.asList(new InsertOneModel<>(new Document(    // "_id", 4)), new InsertOneModel<>(new Document("_id", 5)),    // new InsertOneModel<>(new Document("_id", 6)),    // new UpdateOneModel<>(new Document("_id", 1), new Document(    // "$set", new Document("x", 2))), new DeleteOneModel<>(    // new Document("_id", 2)),    // new ReplaceOneModel<>(new Document("_id", 3), new Document(    // "_id", 3).append("x", 4))), new BulkWriteOptions()    // .ordered(false));    // 获取全部文档    // for (Document cur : collection.find()) {    // System.out.println(cur.toJson());    // }            // 关闭数据库连接    mongoClient.close();     }    }

下载:mongo-java-driver.rar

    bson library