mongoDB JAVA操作

使用mongoDB需要导入以下类,当然不是全部需要,用到的类就导入。
import com.mongodb.Mongo;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;
import com.mongodb.ObjectId;

类转换
当把一个类对象存到mongoDB后,从mongoDB取出来时使用setObjectClass()将其转换回原来的类。
public class Tweet implements DBObject {
/* ... */
}
Tweet myTweet = new Tweet();
myTweet.put("user", "bruce");
myTweet.put("message", "fun");
myTweet.put("date", new Date());
collection.insert(myTweet);
//转换
collection.setObjectClass(Tweet);
Tweet myTweet = (Tweet)collection.findOne();

默认ID
当保存的对象没有设置ID时,mongoDB会默认给该条记录设置一个ID("_id")。
当然你也可以设置自己指定的ID,如:(在mongoDB中执行用db.users.save({_id:1,name:'bruce'});)
BasicDBObject bo = new BasicDBObject();
bo.put('_id', 1);
bo.put('name', 'bruce');
collection.insert(bo);

权限
判断是否有mongoDB的访问权限,有就返回true,否则返回false。
boolean auth = db.authenticate(myUserName, myPassword);

查看mongoDB数据库列表
Mongo m = new Mongo();
for (String s : m.getDatabaseNames()) {
System.out.println(s);
}


查看当前库下所有的表名,等于在mongoDB中执行show tables;
Set<String> colls = db.getCollectionNames();
for (String s : colls) {
System.out.println(s);
}

查看一个表的索引
List<DBObject> list = coll.getIndexInfo();
for (DBObject o : list) {
System.out.println(o);
}

删除一个数据库
Mongo m = new Mongo();
m.dropDatabase("myDatabaseName");

建立mongoDB的链接
Mongo m = new Mongo("localhost", 27017);
DB db = m.getDB("myDatabaseName"); //相当于库名
DBCollection coll = db.getCollection("myUsersTable");//相当于表名

#查询数据
查询第一条记录
DBObject firstDoc = coll.findOne();
findOne()返回一个记录,而find()返回的是DBCursor游标对象。

查询全部数据
DBCursor cur = coll.find();
while(cur.hasNext()) {
System.out.println(cur.next());
}

查询记录数量
coll.find().count();
coll.find(new BasicDBObject("age", 26)).count();

设置条件查询
BasicDBObject condition = new BasicDBObject();
condition.put("name", "bruce");
condition.put("age", 26);
coll.find(condition);

查询部分数据块
DBCursor cursor = coll.find().skip(0).limit(10);
while(cursor.hasNext()) {
System.out.println(cursor.next());
}

比较查询(age > 50)
BasicDBObject condition = new BasicDBObject();
condition.put("age", new BasicDBObject("$gt", 50));
coll.find(condition);
比较符
"$gt": 大于
"$gte":大于等于
"$lt": 小于
"$lte":小于等于
"$in": 包含
//以下条件查询20<age<=30
condition.put("age", new BasicDBObject("$gt", 20).append("$lte", 30));

#插入数据
批量插入
List datas = new ArrayList();
for (int i=0; i < 100; i++) {
BasicDBObject bo = new BasicDBObject();
bo.put("name", "bruce");
bo.append("age", i);
datas.add(bo);
}
coll.insert(datas);

$exists
用来判断一个元素是否存在:
如:db.things.find( {a:{$exists:true}}); // 如果存在元素a,就返回true

$type
基于 bson type来匹配一个元素的类型,像是按照类型ID来匹配,不过我没找到bson类型和id对照表。
db.things.find({a:{$type:2}}); // matches if a is a string

正则表达式
查询所有名字匹配 /joh?n/i 的记录
Pattern pattern = Pattern.compile("joh?n", CASE_INSENSITIVE);
BasicDBObject query = new BasicDBObject("name", pattern);
DBCursor cursor = coll.find(query);
Java代码 收藏代码
  1. packagecom.tmg.java;
  2. importjava.util.regex.Pattern;
  3. importcom.mongodb.BasicDBObject;
  4. importcom.mongodb.DB;
  5. importcom.mongodb.DBCollection;
  6. importcom.mongodb.DBCursor;
  7. importcom.mongodb.DBObject;
  8. importcom.mongodb.Mongo;
  9. /**
  10. *@authorduanzc
  11. *@date:2010-12-23下午05:34:24
  12. *@version:1.0
  13. *@类说明:
  14. */
  15. publicclassMyTest{
  16. publicstaticvoidmain(String[]args){
  17. try{
  18. Mongoconn=newMongo("127.0.0.1");//创建数据库连接
  19. DBlocal=conn.getDB("local");//得到数据库
  20. booleanauth=local.authenticate("doc1","110210121".toCharArray());//用户验证
  21. if(auth){//如果用户名密码验证成功
  22. System.out.println("成功.......");
  23. DBCollectioncol=local.getCollection("collor");//获得表
  24. select(col);
  25. }
  26. }catch(Exceptione){
  27. e.printStackTrace();
  28. }
  29. }
  30. /**查询*/
  31. privatestaticvoidselect(DBCollectioncol){
  32. DBObjectconditions=newBasicDBObject();//条件类
  33. Integer[]num={10,99};
  34. //conditions.put("collor","red");//等于
  35. //conditions.put("size",newBasicDBObject("$gt",5));//gt(>),lt(<),gte(>=),lte(<=),in(包含),nin((不包含)
  36. //conditions.put("size",newBasicDBObject("$gt",5).append("$lt",15));//>5and<15,(可以多个条件)
  37. //conditions.put("num",newBasicDBObject("$in",num));//无效
  38. //conditions.put("properties.skills","java");//子查询:list
  39. //conditions.put("properties.age",23);//子查询:map
  40. //DBCursorite=col.find().skip(1).limit(2);//取范围
  41. DBCursorite=col.find(conditions);//结果集(属性条件:无条件查询所有)
  42. DBCursorite_=col.find(newBasicDBObject//结果集(直接条件)
  43. ("$where","this.size==10"));//>,<,>=,<=,==
  44. while(ite.hasNext()){
  45. System.out.println(ite.next());
  46. }
  47. System.out.println("............");
  48. //===========模糊查询:只能用正则============
  49. Patternjohn=Pattern.compile("ed");//正则
  50. BasicDBObjectquery=newBasicDBObject("collor",john);
  51. DBCursorite2=col.find(query);
  52. while(ite2.hasNext()){
  53. System.out.println(ite2.next());
  54. }
  55. }
  56. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值