Java操作MongoDB之mongodb-driver(一)
<p>1. mongodb-driver是mongo官方推出的java连接mongoDB的驱动包,相当于JDBC驱动。</p><p>(1)通过maven仓库导入:https://mvnrepository.com/artifact/org.mongodb/mongodb-driver</p>
<p>(2)官网中下载相应的java的驱动:http://docs.mongodb.org/ecosystem/drivers/java/</p>
<p>(3)不同的驱动使用的jar也不相同参考:http://mongodb.github.io/mongo-java-driver/</p>
<p>例如:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">dependencies</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">dependency</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">groupId</span><span style="color: rgba(0, 0, 255, 1)">></span>org.mongodb<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">groupId</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">artifactId</span><span style="color: rgba(0, 0, 255, 1)">></span>mongodb-driver-sync<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">artifactId</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">version</span><span style="color: rgba(0, 0, 255, 1)">></span>3.11.2<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">version</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">dependency</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">dependencies</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p> 2. 创建方法类</p>
<p>2.1 查询全部,遍历打印</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">package</span><span style="color: rgba(0, 0, 0, 1)"> mongodb.test;
</span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> org.bson.Document;
</span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> com.mongodb.BasicDBObject;
</span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> com.mongodb.MongoClient;
</span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> com.mongodb.client.FindIterable;
</span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> com.mongodb.client.MongoCollection;
</span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> com.mongodb.client.MongoDatabase;
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> Mongodb {
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* 查询打印全部集合
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> mongoQueryAll() {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">1.创建链接</span>
MongoClient client = <span style="color: rgba(0, 0, 255, 1)">new</span> MongoClient("localhost"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">2.打开数据库test</span>
MongoDatabase db = client.getDatabase("test"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">3.获取集合</span>
MongoCollection<Document> collection = db.getCollection("stu"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">4.查询获取文档集合</span>
FindIterable<Document> documents =<span style="color: rgba(0, 0, 0, 1)"> collection.find();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">5.循环遍历</span>
<span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> (Document document : documents) {
System.out.println(document);
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">6.关闭连接</span>
<span style="color: rgba(0, 0, 0, 1)"> client.close();
}
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> main(String[] args) {
mongoQueryAll();
}</span></pre>
</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">打印输出stu全部数据</span>
Document{{_id=5d7374e836a89c5a3d18b87a, name=<span style="color: rgba(0, 0, 0, 1)">xiaohua}}
Document{{_id</span>=2.0, sn=002, name=<span style="color: rgba(0, 0, 0, 1)">xiaogang}}
Document{{_id</span>=3.0, sn=003, name=zhangfei, job=<span style="color: rgba(0, 0, 0, 1)">前锋战将}}</span><span style="color: rgba(0, 0, 0, 1)">
Document{{_id</span>=5d73782736a89c5a3d18b87b, sn=004, name=<span style="color: rgba(0, 0, 0, 1)">xiaobingbing}}
Document{{_id</span>=5d7396b44ec120618b2dd0cb, name=Document{{surname=李, name=世名}}, job=[皇帝, 大人物, 大丈夫, 功成名就]}}</pre>
</div>
<p>2.2 条件查询</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* 条件查询:如查询id为xxxx的学生所有信息
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> mongoConditionQuery() {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">1.创建链接</span>
MongoClient client = <span style="color: rgba(0, 0, 255, 1)">new</span> MongoClient("localhost"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">2.打开数据库test</span>
MongoDatabase db = client.getDatabase("test"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">3.获取集合</span>
MongoCollection<Document> collection = db.getCollection("stu"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">4.构建查询条件,按照name来查询</span>
BasicDBObject stu = <span style="color: rgba(0, 0, 255, 1)">new</span> BasicDBObject("name","zhangfei"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">5.通过id查询记录,获取文档集合</span>
FindIterable<Document> documents =<span style="color: rgba(0, 0, 0, 1)"> collection.find(stu);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">5.打印信息</span>
<span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> (Document document : documents) {
System.out.println(</span>"name:"+document.getString("name"<span style="color: rgba(0, 0, 0, 1)">));
System.out.println(</span>"sn:"+document.getString("sn"<span style="color: rgba(0, 0, 0, 1)">));
System.out.println(</span>"job:"+document.getString("job"<span style="color: rgba(0, 0, 0, 1)">));
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">6.关闭连接</span>
<span style="color: rgba(0, 0, 0, 1)"> client.close();
}
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> main(String[] args) {
mongoConditionQuery();
}</span></pre>
</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">执行输出</span>
<span style="color: rgba(0, 0, 0, 1)">name:zhangfei
sn:</span>003<span style="color: rgba(0, 0, 0, 1)">
job:前锋战将</span></pre>
</div>
<p>注意:当需要查询条件+判断的时候这样写,例如查询学号sn>003的学员</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">查询sum大于3的学员</span>
BasicDBObject stu = <span style="color: rgba(0, 0, 255, 1)">new</span> BasicDBObject("sum",<span style="color: rgba(0, 0, 255, 1)">new</span> BasicDBObject("$gt",003));</pre>
</div>
<p>2.3 插入语句</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
* 插入语句
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> mongoInsert() {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">1.创建链接</span>
MongoClient client = <span style="color: rgba(0, 0, 255, 1)">new</span> MongoClient("localhost"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">2.打开数据库test</span>
MongoDatabase db = client.getDatabase("test"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">3.获取集合</span>
MongoCollection<Document> collection = db.getCollection("stu"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">4.准备插入数据</span>
HashMap<String, Object> map = <span style="color: rgba(0, 0, 255, 1)">new</span> HashMap<String, Object><span style="color: rgba(0, 0, 0, 1)">();
map.put(</span>"sn","005"<span style="color: rgba(0, 0, 0, 1)">);
map.put(</span>"name","xiaoA"<span style="color: rgba(0, 0, 0, 1)">);
map.put(</span>"job","A工作"<span style="color: rgba(0, 0, 0, 1)">);
map.put(</span>"sum",6<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">5.将map转换成document</span>
Document document = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Document(map);
collection.insertOne(document);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">6.关闭连接</span>
<span style="color: rgba(0, 0, 0, 1)"> client.close();
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">测试执行</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> main(String[] args) {
mongoInsert();
}</span></pre>
</div>
<p>批量插入,仅供参考:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">当需要插入多条文档的时候,循环进行单条插入当然是可以,但是效率不高,MongoDB提供了批量插入的方法</span><span style="color: rgba(0, 0, 0, 1)">
List</span><DBObject> objs = <span style="color: rgba(0, 0, 255, 1)">new</span> ArrayList<DBObject><span style="color: rgba(0, 0, 0, 1)">();
objs.add(</span><span style="color: rgba(0, 0, 255, 1)">new</span> BasicDBObject("name","user29").append("age", 30).append("sex", 1<span style="color: rgba(0, 0, 0, 1)">));
objs.add(</span><span style="color: rgba(0, 0, 255, 1)">new</span> BasicDBObject("name","user30").append("age", 30).append("sex", 1<span style="color: rgba(0, 0, 0, 1)">));
collection.insert(objs);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">这样就批量进行了插入。批量插入通过一次请求将数据传递给数据库,然后由数据库进行插入,比循环单条插入节省了每次进行请求的资源。</span></pre>
</div>
<p>学习后总结,不足之处请指出,后续修改!</p>
<p> </p><br><br>
来源:https://www.cnblogs.com/xiaozhaoboke/p/11880821.html
頁:
[1]