版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java 操作 mongodb 简单介绍MONGODB 的官网:MONGODB 的MONGODB:的驱动:java/mongodb/mongo-java-driver/downloads针对的文档:MONGODBjavaapi一Java 与 mongodb 的连接1.1 连单台 mongodbnew Mongo();/默认连本机 端口为 27017Mongomg=Mongomg=new Mongo(ip);/可以指定ip 端口默认为 27017Mongomg=new Mongo(ip,port);/也可以指定ip 及端1.2 连双台 mongodb/ip 为主机ip 地址,p
2、ort 为端,dataBaseName 相当于数据库名DBAddress left = new DBAddress(ip:port/dataBaseName); DBAddress right = new DBAddress(ip:port/dataBaseName );/若一个mongodb 出现问题,会自动连另外一台Mongo mongo = new Mongo(left, right);1.3 连多台 mongodbList mongoHostList = newArrayList();mongoHostList.add(new mongoHostList.add(new mongoHo
3、stList.add(newServerAddress(ip,port); ServerAddress(ip,port); ServerAddress(ip,port);Mongo mg = new Mongo(mongoHostList);二Java 获取 mongodb 的数据库名2.1 获取 mongodb 的 db/dataBaseName 相当于关系数据库里的数据库名,mongodb 中若没有该数据库名也/不会报错,默认 mongodb 会建立这个数据库名,为空。DB db = mg.getDB(dataBaseName);注意:mongodb 区分大小写,程序中一定要注意2.2mo
4、ngodb 的 db 安全认证/如果mongodb 服务器运行时加了用户名及安全认证 如下图若这个时候要想db 中的collection(相当于关系数据库里的表),就必须通过安全认证才可以,否则会报您没有通过安全认证。/安全认证java 代码 返回true 表示通过,false 表示没通过不能进行操作auth=db.authenticate(userName,password.toCharArray(); if(auth)三Java 对 mongodb 的 collection 进行 crud 操作3.1 得到 mongodb 中的 db 的 collection/参数tableName 相当
5、于关系数据库里的表名,/若mongodb 中没有该tableName,默认会创建该tableName,为空DBCollection users = db.getCollection(tableName);3.2mongodb 中的 db 的 collection 自增长主键Mongodb 中也像传统的关系数据库里表一样,有主键(_id)概念,用来唯一标识他们。当用户往 collection 中一条新的时候,如果没有指定_id 属性,那么 mongodb 会自动生成一个 ObjectId 类型的值,保存为_id的值。_id 的值可以为任何类型,除了数组,在实际应用中,鼓励用户自己定义_id值,但
6、是要保证他的唯一性。传统的数据库中,通常用一个递增的序列来提供主键,在 Mongodb 中用ObjectId 来代替,可以通过如下的方法来得到主键。public class Tools /* 实现mongodb主键自增长的功能*param usersparam tableNamereturn*/public sic long getNext(DBCollection users,String tableName)long incId = 0;try DBObject ret = users.findAndModify(new BasicDBObject(_id, tableName), nul
7、l, null, false, new BasicDBObject($inc, new BasicDBObject(next, 1), true, true);incId = Long.valueOf(ret.get(next).toString(); catch (Exception e) e.prStackTrace();return incId;3.3java 对 collection 进行操作/第一种方式DBObject data1 = new BasicDBObject(); data1.put(_id, Tools.getNext(users, webcall_notice_gx)
8、; data1.put(cust_Id, 123456); data1.put(cust_Name, ); data1.put(cust_BranchNo, 12345);data1.put(notice_Id, 2);data1.put(is_Show, 1); data1.put(start_time, new Date(); data1.put(end_time, new Date(); data1.put(province_Id, 22);data1.put(notice_time_number, 20110616);users.insert(data1);/等同于users.save
9、(data1);/第二中方式BasicDBObjectBuilder data1 = BasicDBObjectBuilder.start().add(_id, webcall_notice_gx).add( );Tools.getNext(users,users.insert(data1.get();/等同于users.save(data1.get();/第三种方式Map data1 = new HashMap(); data1.put(_id, Tools.getNext(users, webcall_notice_gx);users.insert(new BasicDBObject(da
10、ta1);/等同于users.save(new BasicDBObject(data1);/第四中方式String json = database : mkyongDB,table : hosting,+detail : records : 99, index : vps_index1, active : true;DBObject data1 = (DBObject)JSON.parse(json);users.insert(data1);/等同于users.save(data1);3.4java 对 collection 的查询操作/查询所有的数据 find() 注意他返回的是DBCurs
11、orDBCursor cur = users.find();while(cur.hasNext()System.out.prln(cur.next();Find()里面可以加很多参数,相当于关系数据库里where 条件一样如:/查询 id 的值为 30000 的相当于where _id=30000DBCursor cur = users.find(new BasicDBObject(_id,30000);while(cur.hasNext()System.out.prln(cur.next();/查询id 大于等于 30000 的相当于where _id=30000DBCursor cur =
12、 users.find(new BasicDBObject(_id,new BasicDBObject($gte,30000);while(cur.hasNext()System.out.prln(cur.next();/查询id 大于等于 1 的,并且只取 10 条DBCursor cur = users.find(new BasicDBObject(_id,new BasicDBObject($gte,1).limit(10);while(cur.hasNext()System.out.prln(cur.next();/查询id 大于等于 1 的,并按id 进行降序 -1 表示降序,1 升序。DBCursorcur=users.find(newBasicDBObject(_id,newBasicDBObject($gte,1).sort(new BasicDBObject(_id,-1);while(cur.hasNext()System.out.prln(cur.next();/查询id 大于等于 1 的,并跳过前 10 条显示 相当于id10DBCursor cur = users.find(new BasicDBObject(_id,new BasicDBObject($gte,1).skip(10);while(cur.hasNe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环境监测考试题及答案
- 2025年天津市危化品专用安全仓库新建可行性研究报告
- 10万m3化工仓储物流建设项目可行性研究报告
- 高端锂离子电池极耳及智能连接组件产业化项目可行性研究报告模板-备案审批
- 考试护理学(初级(师)203)相关专业知识试题及答案
- 酒店餐饮服务员菜品知识考试试卷及答案
- 井下维修钳工试题及答案
- 销售谈判沟通标准化操作规范
- 某化工厂环保管理制度细则
- 建筑工程质量通病防治 - 安装工程 - 电气工程部分
- 辐照效应和辐照损伤
- T/CNSS 013-2021吞咽障碍膳食营养管理规范
- 3.1《捐书》(教案)2025-2026学年小学数学三年级上册 北师大版
- 秋季食品安全培训目标课件
- 8D报告模板及实例课件
- 药械不良反应培训知识课件
- 护理伦理学人卫版
- 欧泰科-吊挂软件使用教程
- 主题班会关于运动会主题班会
- 粤教版小学科学三年级上册教学计划
- 智慧公路交通讲座-日本的智能交通与智慧公路
评论
0/150
提交评论