MongoDB试用及Java的CRUD
来源:互联网 发布:手机软件无法连接网络 编辑:程序博客网 时间:2024/05/16 03:38
启动mongodb,通过命令行直接运行BIN下面的服务器mongod.exe即可,不过默认的数据库位置在C盘下,这总是不大合适,可以通过加参数 -dbpath来改变,如:
mongod.exe –dbpath d:/db
注意这里有个问题,Windows下,一般是使用\作为路径分隔符的,不过在这里,如果直接使用d:\db这样的话,mongod会把\去掉,变成d:db这样,导致启动失败,所以比较简单的方法就是用/来代替\。
服务器启动后,可以在浏览器中访问,默认地址是:http://127.0.0.1:28017/,里面会有一些数据库的基本信息。
访问数据库可以使用BIN下面的mongo.exe,是个命令行工具。对于用惯了MS-SQL,MySQL这样有良好的数据库UI工具的我来说,让我直接用命令行去操作数据库实在是有些不习惯,在网上查了一下,UI工具有倒是有,不过都不大完善的样子,也就懒得下了。在命令行下,输入help可以看到基本操作命令:
show dbs:显示数据库列表show collections:显示当前数据库中的集合(类似关系数据库中的表)show users:显示用户use <db name>:切换当前数据库,这和MS-SQL里面的意思一样db.help():显示数据库操作命令,里面有很多的命令db.foo.help():显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令db.foo.find():对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据)db.foo.find( { a : 1 } ):对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1
大致的说明一下MongoDB中的数据格式,我没有去详细的查看官方的文档,只是按我试用过的感觉来说,其数据结构,类似JSON,即key-value成对,key一般就是String,而value而无所谓了,如一个JSON数据:
{name:"凤姐",birthday:{year:1987,month:1,day:20}}
只要你愿意,就可以把Value不断的复杂化,以方便存储数据。
要使用Java操作MongoDB的话,要到官方网站下载一个驱动包,点击网站上的Drivers里面,可以看到目前支持的语言,非常的多……把包导入后,可以尝试来操作了(记得一定要开着服务器)
首先介绍一下比较常用的几个类:
- Mongo:连接服务器,执行一些数据库操作的选项,如新建立一个数据库等
- DB:对应一个数据库,可以用来建立集合等操作
- DBCollection:对应一个集合(类似表),可能是我们用得最多的,可以添加删除记录等
- DBObject接口和BasicDBObject对象:表示一个具体的记录,BasicDBObject实现了DBObject,因为是key-value的数据结构,所以用起来其实和HashMap是基本一致的
- DBCursor:用来遍历取得的数据,实现了Iterable和Iterator
接下来实际的操作一下,代码如下:
import com.mongodb.*; public class Main { public static void main(String[] args) { try{ Mongo m = new Mongo("127.0.0.1"); //选择数据库,如果没有这个数据库的话,会自动建立 DB db = m.getDB("mongo"); //列出所有数据库名,不过发现,如果数据库里面是没有数据的话,并不会被列出来 System.out.println("数据库列表:"+m.getDatabaseNames()); //建立一个集合,和数据库一样,如果没有,会自动建立 DBCollection col = db.getCollection("col"); //列出所有集合名,和数据库一样,如果集合里面是没有数据的话,并不会被列出来 System.out.println("当前数据库下的集合列表:"+db.getCollectionNames()); //建立一个数据项,重复执行会多次添加一样的数据 BasicDBObject val = new BasicDBObject(); val.put("name", "凤姐"); col.save(val); //保存的数据为 //{ "_id" : "4b8de2f3053068a371e870c0" , "name" : "凤姐"} //_id是系统自动帮加上的,全局唯一 //多次加入一样的数据时,_id都是不一样的 //取得所有数据并打印出来 DBCursor ite = col.find(); while(ite.hasNext()) { System.out.println(ite.next()); } }catch(Exception error) { error.printStackTrace(); } }}
更新操作:
import com.mongodb.*; public class Main { public static void main(String[] args) { try{ Mongo m = new Mongo("127.0.0.1"); DB db = m.getDB("mongo"); DBCollection col = db.getCollection("col"); System.out.println("修改前:"); showData(col); //查找所有 name=凤姐 的项,并更新 BasicDBObject old_val = new BasicDBObject(),new_val = new BasicDBObject(); old_val.put("name", "凤姐无敌"); new_val.put("name", "凤姐无敌"); col.update(old_val, new_val);//只会更新一个 //col.updateMulti(new_val, old_val)不知道怎么回事,这函数不顶用 System.out.println("修改后:"); showData(col); }catch(Exception error) { error.printStackTrace(); } } static void showData(DBCollection col) { DBCursor ite = col.find(); while(ite.hasNext()) { System.out.println(ite.next()); } }}
综合整理:
package mg;import java.net.UnknownHostException;import com.mongodb.*;public class mogojavaTest {public static void main(String [] args){try {Mongo mg=new Mongo();//查询所有的数据库System.out.println("数据列表!"+mg.getDatabaseNames());//选择某个数据库DB db=mg.getDB("test2");//查询所有的集合名System.out.println("当前数据库下的集合列表为:"+db.getCollectionNames());//选择某个数据库DBCollection col=db.getCollection("user");//插入一个数据项BasicDBObject dat=new BasicDBObject();dat.put("_id", 001);dat.put("name", "haohao");dat.put("age", 23);col.insert(dat);//col.save(dat);showdata(col);//查找所有XX=XX的项,并更新BasicDBObject old_data=new BasicDBObject();BasicDBObject new_data=new BasicDBObject();BasicDBObject ast=new BasicDBObject();old_data.put("name", "haohao");new_data.put("name","chongchong");col.update(old_data, new_data);System.out.print("修改后的数据为:");showdata(col);} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void showdata(DBCollection col){DBCursor cur=col.find();while(cur.hasNext()){System.out.println(cur.next());}System.out.println("当前数量为:"+cur.count());}}
- MongoDB试用及Java的CRUD
- 小试MongoDB及Java的CRUD
- 分享java操作mongodb的crud代码
- java代码对MongoDB的CRUD
- MongoDB与JAVA CRUD
- MongoDB与JAVA CRUD
- 7.MongoDB java CRUD
- MongoDB与JAVA CRUD
- 7.MongoDB java CRUD
- mongodb的crud
- mongodb的CRUD操作
- 二、MongoDB 基本概念 及 CRUD
- mongoDB安装及CRUD操作
- Mongodb之CRUD for Java
- MongoDB基础CRUD JAVA语句
- MongoDB java[CRUD](四)
- 基于mongodb的java之增删改查(CRUD)
- java环境下:MongoDB的crud操作之Update (一)
- Ogre+MFC改造GeoGlobe之纹理寻址
- 互斥线程demo(代码片测试)
- ORA-15064 ORA-03113 - 测试库案例
- 开发cocos2d-x 游戏 实战篇(6)之 绚丽的魔法特效
- 51 EEPROM操作模板
- MongoDB试用及Java的CRUD
- C#子窗口调用父窗口控件的委托实现
- 开发cocos2d-x 游戏 实战篇(7)之关卡系统的基本设计
- 使用javascript实现页面定时跳转
- Flex 动态的设置表格行的背景颜色
- tq2440 MMU实验收获
- 判断点在多边形内还是外部
- 程序中内存分配
- SPL讲解(4)--Criteria操作篇