您的位置:首页 > 数据库 > Mongodb

MongoDB 3.0 速上手教程(JAVA)

2016-02-15 17:29 447 查看
最近做项目想用一下NoSQL数据库,由于项目需要保存大量的json数据,我就选了MongoDB作为我的数据库。

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

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

 

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

 

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

 

Java代码  


package com.zhongli.TwitterGetter.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();  

  

    }  

  

}  

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: