广告
返回顶部
首页 > 资讯 > 数据库 >Java中怎么操作MongoDB数据库
  • 644
分享到

Java中怎么操作MongoDB数据库

2024-04-02 19:04:59 644人浏览 安东尼
摘要

今天就跟大家聊聊有关Java中怎么操作mongoDB数据库,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java与monGodb的连接1. 连单台m

今天就跟大家聊聊有关Java中怎么操作mongoDB数据库,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

Java与monGodb的连接

1. 连单台mongodb

Mongo mg = new Mongo();//默认连本机127.0.0.1 端口为27017

Mongo mg = new Mongo(ip);//可以指定ip 端口默认为27017

Mongo mg = new Mongo(ip,port);//也可以指定ip及端口

2. 连双台mongodb

//ip为主机ip地址,port为端口号,dataBaseName相当于数据库名

DBAddress left = new DBAddress("ip:port/dataBaseName");

DBAddress right = new DBAddress("ip:port/dataBaseName ");

//若一个mongodb出现问题,会自动连另外一台

Mongo mongo = new Mongo(left, right);

3. 连多台mongodb

List<ServerAddress> mongoHostList = new ArrayList<ServerAddress>();

mongoHostList.add(new ServerAddress("ip",port));

mongoHostList.add(new ServerAddress("ip",port));

mongoHostList.add(new ServerAddress("ip",port));

Mongo mg = new Mongo(mongoHostList);

Java获取mongodb的数据库名

1. 获取mongodb的db(数据库)

//dataBaseName相当于关系数据库里的数据库名,mongodb中若没有该

//数据库名也不会报错,默认mongodb会建立这个数据库名,为空。

DB db = mg.getDB(dataBaseName);

注意:mongodb区分大小写,程序中一定要注意

2.mongodb的db安全认证

//安全认证java代码 返回true表示通过,false表示没通过不能进行操作

db.authenticate("userName", "passWord".toCharArray());

if(db.authenticate("admin", "123".toCharArray())){

  System.out.println("连接mongodb成功...");

} else{

  System.out.println("连接mongodb失败...");

}

Java对mongodb的collection进行crud操作

1.得到mongodb中的db的collection(表)

//参数tableName相当于关系数据库里的表名,
//若mongodb中没有该tableName,默认会创建该tableName,为空
DBCollection users = db.getCollection(tableName);
//列出库的集合列表,相对于表对象
Set<String> colls = db.getCollectionNames();
for(String s : colls){
}
// 获取单个集合
DBCollection con = db.getCollection("users");

2.mongodb中的db的collection自增长主键

  Mongodb中也像传统的关系数据库里表一样,有主键(_id)概念,用来唯一标识他们。当用户往collection中插入一条新记录的时候,如果没有指定_id属性,那么mongodb会自动生成一个ObjectId类型的值,保存为_id的值。

  _id的值可以为任何类型,除了数组,在实际应用中,鼓励用户自己定义_id值,但是要保证他的唯一性。

  传统的数据库中,通常用一个递增的序列来提供主键,在Mongodb中用ObjectId来代替,我们可以通过如下的方法来得到主键。

public class Tools {

public static long getNext(DBCollection users,String tableName){
long incId = 0;
try {
 DBObject ret = users.findAndModify(
 new BasicDBObject("_id", tableName), null, null, false,
 new BasicDBObject("$inc", new BasicDBObject("next", 1)),
 true, true);
 incId = Long.valueOf(ret.get("next").toString());
} catch (Exception e) {
 e.printStackTrace();
}
 return incId;
}
}

3.java对collection进行插入操作

DB db = m.getDB("testdb");
DBCollection con = db.getCollection("users");
//普通添加
BasicDBObject doc = new BasicDBObject();
doc.put("name", "MongoDB");
doc.put("type", "database");
doc.put("count", 1);
BasicDBObject info = new BasicDBObject();
info.put("x", 203);
info.put("y", 102);
doc.put("info", info);
con.insert(doc); //插入对象
//特殊添加
// 添加多个特殊数据(模式自由)
for(int i = 1; i <=20; i++){
con.insert(new BasicDBObject().append("i", i));
}

DBObject user_JSON = (DBObject)jsON.parse("{'user':[{'name':'AAA', 'age':'18'},{'name':'BBB', 'age':'19'}]}");
con.insert(user_json);
//添加JAVA对象
// 添加java对象,对象要序列化Serializable接口
UserInfo userinfo = new UserInfo("用户甲AA", 1);
User user = new User(1, "123", userinfo);
ByteArrayOutputStream os = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(os); 
out.writeObject(user);
os.close(); out.close();
con.insert(MonGoUtil.insertObject("user_info",os.toByteArray()));

List<UserInfo> list = new ArrayList<UserInfo>();
list.add(new UserInfo("List1", 1));
list.add(new UserInfo("List2", 2));
list.add(new UserInfo("List3", 3));
ByteArrayOutputStream os = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(os); 
out.writeObject(list);
os.close(); out.close();
con.insert(MonGoUtil.insertObject("lists",os.toByteArray()));

4.java对collection的查询操作



public static void showDBCursor(DBCursor cur){

 while(cur.hasNext()){

 System.out.println(cur.next());

 }

 System.out.println();

}

 高级查询

//查询_id为30000 返回cust_Id的值 ,mongodb查询都会返回主键的值

System.out.println(users.findOne(new BasicDBObject("_id",30000),new BasicDBObject("cust_Id",true)));

findAndRemove() 查询_id=30000的数据,并且删除

users.findAndRemove(new BasicDBObject("_id", 30000));

findAndModify介绍

users.findAndModify(

    new BasicDBObject("_id", 28), //查询_id=28的数据

    new BasicDBObject("cust_Id", true), //查询cust_Id属性

    new BasicDBObject("notice_Id", true), //按照notice_Id排序

    false, //查询到的记录是否删除,true表示删除

    new BasicDBObject("province_Id", "100"), //将province_id的值改为100

    true, //是否返回新记录 true返回,false不返回

    true //如果没有查询到该数据是否插collection true入库,false不入

));

查询所有数据

//列出所有文档

BasicDBObject query = new BasicDBObject();

System.out.println("列出"+ con.getName() +"集合(表)的所有文档...");

showDBCursor(con.find());

查询JAVA对象

String key = "user_info";

BasicDBObject query = new BasicDBObject();

query.put(key, new BasicDBObject("$exists", true));

byte[] b = (byte[])con.findOne(query).get(key);

InputStream inputStream = new ByteArrayInputStream(b);

ObjectInputStream in = new ObjectInputStream(inputStream); 

User users = (User) in.readObject();

System.out.println("用户对象_json:" + JSONArray.fromObject(users));

 单一条件查询(数字)

BasicDBObject query = new BasicDBObject();

query.put("i", 11);

showDBCursor(con.find(query));

 单一条件查询(字符串)

BasicDBObject query = new BasicDBObject();

query.put("name", "MongoDB");

showDBCursor(con.find(query));

 $ne非等于查询

BasicDBObject query = new BasicDBObject();

query.put("name", new BasicDBObject("$ne", "MongoDB"));

showDBCursor(con.find(query));

 根据列名查询

System.out.println("查询有'type'字段的数据..."); // false表示没有

BasicDBObject query = new BasicDBObject();

query.put("type", new BasicDBObject("$exists", true)); // false

showDBCursor(con.find(query));

 单字段and查询

System.out.println("单字段and条件的使用,i>=2 and i<5 ,i:[2,5)...");

BasicDBObject query = new BasicDBObject();

query.put("i", new BasicDBObject("$gte", 2).append("$lt", 5));

showDBCursor(con.find(query));

 多字段and查询

BasicDBObject query = new BasicDBObject();();

query.put("name", "MongoDB");

query.put("type", "database");

System.out.println(con.findOne(query));

showDBCursor(con.find(query));

 单字段or查询

System.out.println("单字段or条件的使用,i<2 or i>=18...");

BasicDBList values = new BasicDBList(); 

values.add(new BasicDBObject("i", new BasicDBObject("$gte", 18))); 

values.add(new BasicDBObject("i", new BasicDBObject("$lt", 2)));

BasicDBObject query = new BasicDBObject();();

query.put("$or", values);

showDBCursor(con.find(query));

多字段or查询

// "多字段or条件的使用,name:'MongoDB' or x:'203'..."

BasicDBList values = new BasicDBList(); ();

values.add(new BasicDBObject("name", "MongoDB")); 

values.add(new BasicDBObject("x", 203));

BasicDBObject query = new BasicDBObject();();

query.put("$or", values);

showDBCursor(con.find(query));

$in 查询

System.out.println("in条件的使用$in...");

BasicDBList values = new BasicDBList(); ();

for (int i = 1; i <=10; i++) {

 values.add(i);

}

BasicDBObject query = new BasicDBObject();();

query.put("i", new BasicDBObject("$in", values));

showDBCursor(con.find(query));

Order By 排序查询

System.out.println("排序[1=asc,-1=desc]...");

showDBCursor(con.find(query).sort(new BasicDBObject("i", -1)));

分页查询

// "分页查询的使用,总数据量:"+con.find(query).count()

con.find(query).limit(1); // 只取第1条数据

con.find(query).skip(1).limit(1); // 从1开始取1条数据,下标从0开始

con.find(query).sort(new BasicDBObject("i", -1)).skip(0).limit(5); // DESC后取5条数据

//findAndRemove()方法,删除查询到的数据,删除后的结果集

con.findAndRemove(new BasicDBObject("i", 1));

showDBCursor(con.find(query));

con.findAndRemove(new BasicDBObject("i", new BasicDBObject("$in",  values))); //【注意:多个数值无效】

showDBCursor(con.find(query));

 (not)  OR  (not in)查询

System.out.println("not,not in条件的使用$not");

BasicDBObject query = new BasicDBObject();();

query.put("i", new BasicDBObject("$not", new BasicDBObject("$in", values)));

showDBCursor(con.find(query));

 Like模糊查询

System.out.println("like查询的使用...");

BasicDBObject query = new BasicDBObject();();

query.put("type", MonGoUtil.getLikeStr("a"));

showDBCursor(con.find(query));

 根据字段类型查询

System.out.println("根据数据类型查询,字符类型...");

BasicDBObject query = new BasicDBObject();();

query.put("name", new BasicDBObject("$type", 2)); //字节

showDBCursor(con.find(query));

System.out.println("根据数据类型查询,整型...");

BasicDBObject query = new BasicDBObject();();

query.put("i", new BasicDBObject("$type", 16));

showDBCursor(con.find(query));

  返回查询的部分字段

//"查询数据的部分字段,1表示只返回本字段,0表示返回除此字段之外的字段"

con.find(new BasicDBObject("name", MonGoUtil.getLikeStr("b")), new BasicDBObject("name", 1));

5.java对collection的更新操作

//查询id为300的记录,将cust_Id的值更新为6533615,一定要注意大小写,以及数据//类型,返回值为int表示所影响的记录条数

//可以用users.findOne(new BasicDBObject("_id",300));查看下,会发现这条记录//只返回两个字段了,分别为_id,cust_Id,别的字段都删除了。

users.update(new BasicDBObject("_id",300), new BasicDBObject ("cust_Id","6533615")).getN();

// 参数3表示数据库不存在是否添加(默认false),参数4表示是否多条修改(false只修改1条)

con.update(new BasicDBObject("name", "MongoDB"),

new BasicDBObject("$set", new BasicDBObject("type", "修改后的type"))).getN();

con.update(new BasicDBObject("name", "MongoDBs"),

new BasicDBObject("$set", new BasicDBObject("type", "修改后的type")), true, true).getN();

6.java对collection的删除操作

/移除cust_Id为6533615的数据。注意 用remove方法不释放磁盘空间,

//mongodb只在collection中做了标志,没有正在删除。

users.remove(new BasicDBObject("cust_Id","6533615")).getN();

//移除id>=1的数据

users.remove(newBasicDBObject("_id",new BasicDBObject("$gte",1))).getN();

//移除整个collection,drop也不释放磁盘空间

users.drop();

// 根据条件删除文档(数据)

BasicDBList rls = new BasicDBList();

for (int i = 11; i <= 20; i++) {

 rls.add(i);

}

query.put("i", new BasicDBObject("$in", rls));

con.remove(query);

7.读取mongodb中Binary Data类型数据

 Binary binary = (Binary) doc.get("Data");

 byte[] data=binary.getData();

看完上述内容,你们对Java中怎么操作MongoDB数据库有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网数据库频道,感谢大家的支持。

您可能感兴趣的文档:

--结束END--

本文标题: Java中怎么操作MongoDB数据库

本文链接: https://www.lsjlt.com/news/56465.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中怎么操作MongoDB数据库
    今天就跟大家聊聊有关Java中怎么操作MongoDB数据库,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java与mongodb的连接1. 连单台m...
    99+
    2022-10-18
  • Python中怎么操作MongoDB数据库
    这期内容当中小编将会给大家带来有关Python中怎么操作MongoDB数据库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、连接服务器连接服务器需要提供一个地址和接口import pymong...
    99+
    2023-06-15
  • Python怎么操作MongoDB数据库
    这篇文章主要介绍“Python怎么操作MongoDB数据库”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python怎么操作MongoDB数据库”文章能帮助大家解决问题。一、连接器的安装和配置pym...
    99+
    2023-07-05
  • MongoDB中怎么操作数据库文档
    MongoDB中怎么操作数据库文档,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。插入文档  要将数据插入到 Mong...
    99+
    2022-10-18
  • 怎么操作mongodb数据库文件
    要操作MongoDB数据库文件,可以按照以下步骤进行操作:1. 安装MongoDB:首先,需要安装MongoDB数据库。你可以从Mo...
    99+
    2023-08-31
    mongodb数据库
  • Python中怎么操作MongoDB文档数据库
    Python中怎么操作MongoDB文档数据库,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.Pymongo 安装安装pymongo:pip install&nbs...
    99+
    2023-06-02
  • 怎么用python包操作mongodb数据库
    本文小编为大家详细介绍“怎么用python包操作mongodb数据库”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用python包操作mongodb数据库”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、安...
    99+
    2023-06-30
  • Node.js中怎么利用mongoose操作mongodb数据库
    本篇文章给大家分享的是有关Node.js中怎么利用mongoose操作mongodb数据库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.利...
    99+
    2022-10-19
  • 如何使用Java操作MongoDB数据库
    如何使用Java操作MongoDB数据库?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。常用的java框架有哪些1.SpringMVC,Spring Web MV...
    99+
    2023-06-14
  • Java操作MongoDB数据库的示例代码
    目录环境准备 1.数据库操作 1.1获取所有数据库1.2获取指定库的所有集合名1.3.删除数据库2.文档操作 2.1插入文档 2.2查询文档 2.3分页查询 2.4修改文档2.5 删...
    99+
    2022-11-12
  • MongoDB中怎么操作集合数据
    这篇文章给大家介绍MongoDB中怎么操作集合数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.查看已有集合show collections2.向集合中添加数据db.runoob....
    99+
    2022-10-18
  • Mongodb中怎么读取数据操作
    Mongodb中怎么读取数据操作,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Mongodb读数据操作Mongodb读数据(文档documen...
    99+
    2022-10-18
  • PHP中如何操作MongoDB 数据库
    这期内容当中小编将会给大家带来有关PHP中如何操作MongoDB 数据库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1,连接MongoDB数据库$conn =...
    99+
    2022-10-18
  • mongodb 数据库备份操作
    mongodb  数据库备份mongodump --host mongodb.example.net --port 27017备份路径选择mongodump --out /data/backup/...
    99+
    2022-10-18
  • mongoDB数据库基本操作
    mongoDB中聚集集合(collection/coll)相当于mysql中的表文档相当于mysql中的每一行数据常用命令 1.获得帮助命令db.help() db.表名.help() db.表名...
    99+
    2022-10-18
  • MongoDB(三):数据库操作、集合操作
    1. 数据库操作 看完前面的文章,大家应该把环境搭建好了,下面我们就开始学习MongoDB的一些基本操作了。 首先我们要了解的一些要点: MongoDB将数据存储为一个文档,数据结构由键值对(key=>value)组成 MongoDB文档...
    99+
    2017-03-01
    MongoDB(三):数据库操作 集合操作
  • python 操作 mongodb 数据库详情
    目录一、安装二、连接数据库三、创建数据库四、所有数据库五、创建集合六、插入数据七、查询数据八、高级查询九、count统计十、修改数据十一、删除数据十二、数据排序一、安装 pip in...
    99+
    2022-11-10
  • 使用Node怎么对MongoDB数据库进行操作
    这篇文章给大家介绍使用Node怎么对MongoDB数据库进行操作,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.使用 MongoDB模块 进行操作 首先在工作目录安装 mo...
    99+
    2022-10-18
  • MongoDB中怎么实现数据删除操作
    MongoDB中怎么实现数据删除操作,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 在MongoDB里面数据的...
    99+
    2022-10-18
  • MongoDB中怎么实现数据增加操作
    这期内容当中小编将会给大家带来有关MongoDB中怎么实现数据增加操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 只要是数据库那么就绝对离...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作