设为首页 收藏本站
查看: 1115|回复: 0

[经验分享] 在java中使用MongoDB数据库

[复制链接]

尚未签到

发表于 2017-12-14 19:56:35 | 显示全部楼层 |阅读模式
Java

安装
  要想在 Java 程序中使用 MongoDB,需要先确定是否安装了 MongoDB JDBC 驱动,并且要在机器上安装了 Java。查看 Java 教程来确保在机器上安装好 Java。下面来介绍如何安装 MongoDB JDBC 驱动。


  • 从路径 Download mongo.jar 处下载 jar 文件,注意下载最新版本。
  • 在类路径中包括 mongo.jar 文件。
连接数据库
  为了连接数据库,需要指定数据库名称,如果数据库不存在,mongodb 就会自动创建它。
  连接数据库的代码段如下所示:

DSC0000.gif   

import com.mongodb.MongoClient;  
import com.mongodb.MongoException;
  
import com.mongodb.WriteConcern;
  
import com.mongodb.DB;
  
import com.mongodb.DBCollection;
  
import com.mongodb.BasicDBObject;
  
import com.mongodb.DBObject;
  
import com.mongodb.DBCursor;
  
import com.mongodb.ServerAddress;
  
import java.util.Arrays;
  

  
public>  public static void main( String args[] ){
  try{   
  // To connect to mongodb server
  MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
  // Now connect to your databases
  DB db = mongoClient.getDB( "test" );
  System.out.println("Connect to database successfully");
  boolean auth = db.authenticate(myUserName, myPassword);
  System.out.println("Authentication: "+auth);
  }catch(Exception e){
  System.err.println( e.getClass().getName() + ": " + e.getMessage() );
  }
  }
  
}
  


  下面编译并运行上面的程序,以便测试数据库。可以针对每个需求改变路径。假设当前 JDBC 驱动版本 mongo-2.10.1.jar 可用于当前路径。
  

$javac MongoDBJDBC.java  
$java -classpath ".:mongo-2.10.1.jar" MongoDBJDBC
  
Connect to database successfully
  
Authentication: true
  

  如果想使用 Windows 系统的机器,则编译并执行代码如下:
  

$javac MongoDBJDBC.java  
$java -classpath ".;mongo-2.10.1.jar" MongoDBJDBC
  
Connect to database successfully
  
Authentication: true
  

  如果选定数据库的用户名及密码有效,则 auth 值为 true。

创建集合
  创建集合需要使用 com.mongodb.DB 类的 createCollection() 方法。
  创建集合的代码段如下所示:


  

import com.mongodb.MongoClient;  
import com.mongodb.MongoException;
  
import com.mongodb.WriteConcern;
  
import com.mongodb.DB;
  
import com.mongodb.DBCollection;
  
import com.mongodb.BasicDBObject;
  
import com.mongodb.DBObject;
  
import com.mongodb.DBCursor;
  
import com.mongodb.ServerAddress;
  
import java.util.Arrays;
  

  
public>  public static void main( String args[] ){
  try{   
  // To connect to mongodb server
  MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
  // Now connect to your databases
  DB db = mongoClient.getDB( "test" );
  System.out.println("Connect to database successfully");
  boolean auth = db.authenticate(myUserName, myPassword);
  System.out.println("Authentication: "+auth);
  DBCollection coll = db.createCollection("mycol");
  System.out.println("Collection created successfully");
  }catch(Exception e){
  System.err.println( e.getClass().getName() + ": " + e.getMessage() );
  }
  }
  
}
  


  编译并执行该程序,结果如下所示:
  

Connect to database successfully  
Authentication: true
  
Collection created successfully
  


获取/选择一个集合
  从数据库中获取/选择一个集合,使用 com.mongodb.DBCollection 类的 getCollection() 方法。代码段如下:


  

import com.mongodb.MongoClient;  
import com.mongodb.MongoException;
  
import com.mongodb.WriteConcern;
  
import com.mongodb.DB;
  
import com.mongodb.DBCollection;
  
import com.mongodb.BasicDBObject;
  
import com.mongodb.DBObject;
  
import com.mongodb.DBCursor;
  
import com.mongodb.ServerAddress;
  
import java.util.Arrays;
  

  
public>  public static void main( String args[] ){
  try{   
  // To connect to mongodb server
  MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
  // Now connect to your databases
  DB db = mongoClient.getDB( "test" );
  System.out.println("Connect to database successfully");
  boolean auth = db.authenticate(myUserName, myPassword);
  System.out.println("Authentication: "+auth);
  DBCollection coll = db.createCollection("mycol");
  System.out.println("Collection created successfully");
  DBCollection coll = db.getCollection("mycol");
  System.out.println("Collection mycol selected successfully");
  }catch(Exception e){
  System.err.println( e.getClass().getName() + ": " + e.getMessage() );
  }
  }
  
}
  


  编译并执行该程序,结果如下所示:
  

Connect to database successfully  
Authentication: true
  
Collection created successfully
  
Collection mycol selected successfully
  


插入文档
  插入文档使用 com.mongodb.DBCollection 类的 insert() 方法。代码段如下所示:


  

import com.mongodb.MongoClient;  
import com.mongodb.MongoException;
  
import com.mongodb.WriteConcern;
  
import com.mongodb.DB;
  
import com.mongodb.DBCollection;
  
import com.mongodb.BasicDBObject;
  
import com.mongodb.DBObject;
  
import com.mongodb.DBCursor;
  
import com.mongodb.ServerAddress;
  
import java.util.Arrays;
  

  
public>  public static void main( String args[] ){
  try{   
  // To connect to mongodb server
  MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
  // Now connect to your databases
  DB db = mongoClient.getDB( "test" );
  System.out.println("Connect to database successfully");
  boolean auth = db.authenticate(myUserName, myPassword);
  System.out.println("Authentication: "+auth);         
  DBCollection coll = db.getCollection("mycol");
  System.out.println("Collection mycol selected successfully");
  DBCursor cursor = coll.find();
  int i=1;
  while (cursor.hasNext()) {
  System.out.println("Inserted Document: "+i);
  System.out.println(cursor.next());
  i++;
  }
  }catch(Exception e){
  System.err.println( e.getClass().getName() + ": " + e.getMessage() );
  }
  }
  
}
  


  编译并执行该程序,结果如下所示
  

Connect to database successfully  
Authentication: true
  
Collection mycol selected successfully
  
Document inserted successfully
  


检索所有文档
  选择集合中的所有文档,使用 com.mongodb.DBCollection 类的 find() 方法。该方法返回一个游标,所以需要迭代该游标。
  选择所有文档的代码如下所示:


  

import com.mongodb.MongoClient;  
import com.mongodb.MongoException;
  
import com.mongodb.WriteConcern;
  
import com.mongodb.DB;
  
import com.mongodb.DBCollection;
  
import com.mongodb.BasicDBObject;
  
import com.mongodb.DBObject;
  
import com.mongodb.DBCursor;
  
import com.mongodb.ServerAddress;
  
import java.util.Arrays;
  

  
public>  public static void main( String args[] ){
  try{   
  // To connect to mongodb server
  MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
  // Now connect to your databases
  DB db = mongoClient.getDB( "test" );
  System.out.println("Connect to database successfully");
  boolean auth = db.authenticate(myUserName, myPassword);
  System.out.println("Authentication: "+auth);         
  DBCollection coll = db.getCollection("mycol");
  System.out.println("Collection mycol selected successfully");
  DBCursor cursor = coll.find();
  while (cursor.hasNext()) {
  DBObject updateDocument = cursor.next();
  updateDocument.put("likes","200")
  col1.update(updateDocument);
  }
  System.out.println("Document updated successfully");
  cursor = coll.find();
  int i=1;
  while (cursor.hasNext()) {
  System.out.println("Updated Document: "+i);
  System.out.println(cursor.next());
  i++;
  }
  }catch(Exception e){
  System.err.println( e.getClass().getName() + ": " + e.getMessage() );
  }
  }
  
}
  


  编译并执行程序的结果如下:


  

Connect to database successfully  
Authentication: true
  
Collection mycol selected successfully
  
Document updated successfully
  
Updated Document: 1
  
{
  "_id" : ObjectId(7df78ad8902c),
  "title": "MongoDB",
  "description": "database",
  "likes": 100,
  "url": "http://www.tutorialspoint.com/mongodb/",
  "by": "tutorials point"
  
}
  



更新文档
  更新集合中的文档,使用 com.mongodb.DBCollection 类的 update() 方法。代码如下所示:

  

import com.mongodb.MongoClient;  
import com.mongodb.MongoException;
  
import com.mongodb.WriteConcern;
  
import com.mongodb.DB;
  
import com.mongodb.DBCollection;
  
import com.mongodb.BasicDBObject;
  
import com.mongodb.DBObject;
  
import com.mongodb.DBCursor;
  
import com.mongodb.ServerAddress;
  
import java.util.Arrays;
  

  
public>  public static void main( String args[] ){
  try{   
  // To connect to mongodb server
  MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
  // Now connect to your databases
  DB db = mongoClient.getDB( "test" );
  System.out.println("Connect to database successfully");
  boolean auth = db.authenticate(myUserName, myPassword);
  System.out.println("Authentication: "+auth);         
  DBCollection coll = db.getCollection("mycol");
  System.out.println("Collection mycol selected successfully");
  DBCursor cursor = coll.find();
  while (cursor.hasNext()) {
  DBObject updateDocument = cursor.next();
  updateDocument.put("likes","200")
  col1.update(updateDocument);
  }
  System.out.println("Document updated successfully");
  cursor = coll.find();
  int i=1;
  while (cursor.hasNext()) {
  System.out.println("Updated Document: "+i);
  System.out.println(cursor.next());
  i++;
  }
  }catch(Exception e){
  System.err.println( e.getClass().getName() + ": " + e.getMessage() );
  }
  }
  
}
  


  程序编译及运行结果如下:


  

Connect to database successfully  
Authentication: true
  
Collection mycol selected successfully
  
Document updated successfully
  
Updated Document: 1
  
{
  "_id" : ObjectId(7df78ad8902c),
  "title": "MongoDB",
  "description": "database",
  "likes": 100,
  "url": "http://www.tutorialspoint.com/mongodb/",
  "by": "tutorials point"
  
}
  



删除第一个文档
  删除集合中的第一个文档,需要使用 findOne() 方法选中第一个文档,然后使用 com.mongodb.DBCollection 类的remove 方法将其删除。代码范例如下:

  

import com.mongodb.MongoClient;  
import com.mongodb.MongoException;
  
import com.mongodb.WriteConcern;
  
import com.mongodb.DB;
  
import com.mongodb.DBCollection;
  
import com.mongodb.BasicDBObject;
  
import com.mongodb.DBObject;
  
import com.mongodb.DBCursor;
  
import com.mongodb.ServerAddress;
  
import java.util.Arrays;
  


  
public>  public static void main( String args[] ){
  try{   
  // To connect to mongodb server
  MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
  // Now connect to your databases
  DB db = mongoClient.getDB( "test" );
  System.out.println("Connect to database successfully");
  boolean auth = db.authenticate(myUserName, myPassword);
  System.out.println("Authentication: "+auth);         
  DBCollection coll = db.getCollection("mycol");
  System.out.println("Collection mycol selected successfully");
  DBObject myDoc = coll.findOne();
  col1.remove(myDoc);
  DBCursor cursor = coll.find();
  int i=1;
  while (cursor.hasNext()) {
  System.out.println("Inserted Document: "+i);
  System.out.println(cursor.next());
  i++;
  }
  System.out.println("Document deleted successfully");
  }catch(Exception e){
  System.err.println( e.getClass().getName() + ": " + e.getMessage() );
  }
  }
  
}
  


  程序编译并执行结果如下所示:
  

Connect to database successfully  
Authentication: true
  
Collection mycol selected successfully
  
Document deleted successfully
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-424147-1-1.html 上篇帖子: mongodb 3.4 集群搭建升级版 五台集群 下篇帖子: mongoDB & Nodejs 访问mongoDB (二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表