医缘 發表於 2019-11-18 16:53:00

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)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">dependencies</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">dependency</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">groupId</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>org.mongodb<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">groupId</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">artifactId</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>mongodb-driver-sync<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">artifactId</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">version</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>3.11.2<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">version</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">dependency</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">dependencies</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span></pre>
</div>
<p>&nbsp;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&lt;Document&gt; 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&lt;Document&gt; 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&lt;Document&gt; 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&lt;Document&gt; 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&gt;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&lt;Document&gt; 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&lt;String, Object&gt; map = <span style="color: rgba(0, 0, 255, 1)">new</span> HashMap&lt;String, Object&gt;<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>&lt;DBObject&gt; objs = <span style="color: rgba(0, 0, 255, 1)">new</span> ArrayList&lt;DBObject&gt;<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>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/xiaozhaoboke/p/11880821.html
頁: [1]
查看完整版本: Java操作MongoDB之mongodb-driver(一)