`
rsljdkt
  • 浏览: 451638 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Java MongoDB 数据库操作集锦

    博客分类:
  • DB
阅读更多

  关于分布式文档存储数据库MongoDB的介绍就不多说了,下面总结了一些常用的MongoDB命令行工具和Java API的使用方法。

  命令行工具Mongo.exe 

  mongo.exe工具在bin目录下,启动MongoDB服务器后,打开开程序,即自动连接到服务器上,并切换当前数据库到test数据库。常用的命令有:

show dbs  //显示数据库列表
show collections  //显示当前数据库中的集合
show users  //显示用户
user <db name>  //切换当前数据库
db.help()  //显示数据库操作命令
db.foo.help()  //显示集合操作命令,foo是当前数据库下,一个叫foo的集合
db.foo.find()  //对当前数据库下的foo集合进行查找,会列出所有数据
db.foo.find({p:1}) //查询当前数据库foo集合下有属性p并且值为1的对象
db.foo.insert({name:'Jack'})  //在foo集合下插入一条数据,name属性的值为'Jack'
db.foo.remove({name:'Jack'})  //删除foo集合下所有有name属性并且值为'Jack'的对象

 Java Mongo操作

 常用Java类

Mongo:用于执行一些数据库操作,如建立一个数据库等
DB:对应一个数据库,可以用来建立集合等
DBCollection:对应一个集合(类比关系数据库中的表),可用于增删改查对象
DBObject:接口,代表一个具体的记录。
BasicDBObject:实现了DBObject,由于是key-value结构,所以用起来和HashMap基本一致。
DBCursor:游标,用来遍历查询取得的数据,实现了Iterable和Iterator

 

建立数据库连接

Mongo m = new Mongo("localhost");//默认使用27017端口
DB db = m.getDB("test");//获得名为test的数据库,没有则创建
DBCollection students = db.getCollection("students"); //获得名为students的集合,没有则自动创建

查看MongoDB数据库列表

System.out.println(m.getDatabaseNames());

查看当前数据库下所有集合

System.out.println(db.getCollectionNames());

删除一个数据库

 

m.dropDatabase("test");

插入数据

 

BasicDBObject o = new BasicDBObject();
o.put("name", "jack");
students.insert(o);

查询数据

 

		//条件查询,students集合下有属性name且值为"Jack"的对象
		BasicDBObject cond = new BasicDBObject();
		cond.put("name", "Jack");
		DBCursor cur = students.find(cond);
		while(cur.hasNext()){
			System.out.println(cur.next());
		}
		
		//查询students集合下的所有对象
		cur = students.find();
		while(cur.hasNext()){
			System.out.println(cur.next());
		}
		
		//查询students集合下的第一个对象
		System.out.println(students.findOne());
		
		//查询记录数量
		System.out.println(students.find().count());
		
		//查询部分数据块
		cur = students.find().skip(0).limit(1);
		while(cur.hasNext()){
			System.out.println(cur.next());
		}
		//比较查询 
		//"$gt": 大于
		//"$gte":大于等于
		//"$lt": 小于
		//"$lte":小于等于
		//"$in": 包含
		//查询age>19的学生
		cond = new BasicDBObject();
		cond.put("age", new BasicDBObject("$gt",19));
		cur = students.find(cond);
		while(cur.hasNext()){
			System.out.println(cur.next());
		}
		//查询19<age<30的学生
		cond = new BasicDBObject();
		cond.put("age",new BasicDBObject("$gt",19).append("$lt", 30));
		cur = students.find(cond);
		while(cur.hasNext()){
			System.out.println(cur.next());
		}
		//查询 age in (19,20)的学生
		cond = new BasicDBObject();
		int [] arr = {19,20};
		cond.put("age",new BasicDBObject("$in",arr));
		cur = students.find(cond);
		while(cur.hasNext()){
			System.out.println(cur.next());
		}
		//正则表达式查询
		Pattern p = Pattern.compile("Ja?k");
		cond = new BasicDBObject();
		cond.put("name", p);
		cur = students.find(cond);
		while(cur.hasNext()){
			System.out.println(cur.next());
		}

 更新操作

主要使用update(BasicObject, BasicObject)方法

  第一个参数是查找条件,需要修改的对象,第二个参数是修改内容,如果不用set就是把原来的对象更新为现在的对象。
如果有$set那就是更新属性,如果属性不存在则添加。其他参数使用方法一样。 

		//更新name="Jack"的学生的年龄为21
		students.update(new BasicDBObject("name","Jack"), new BasicDBObject("$set", new BasicDBObject("age",21)));

 删除操作

 

		//删除名为Jack的学生
		BasicDBObject cond = new BasicDBObject();
		cond.put("name", "Jack");
		students.remove(cond);

 

0
5
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics