海立美达董事长照片:mongoDB JAVA操作

来源:百度文库 编辑:偶看新闻 时间:2024/06/11 20:45:57

mongoDB JAVA操作

MongoDBJava使用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 colls = db.getCollectionNames();
for (String s : colls) {
System.out.println(s);
}

查看一个表的索引
List 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": 包含
//以下条件查询20condition.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. package com.tmg.java;  
  2.   
  3. import java.util.regex.Pattern;  
  4.   
  5. import com.mongodb.BasicDBObject;  
  6. import com.mongodb.DB;  
  7. import com.mongodb.DBCollection;  
  8. import com.mongodb.DBCursor;  
  9. import com.mongodb.DBObject;  
  10. import com.mongodb.Mongo;  
  11.   
  12. /** 
  13.  * @author duanzc 
  14.  * @date:2010-12-23 下午05:34:24 
  15.  * @version :1.0 
  16.  * @类说明: 
  17.  */  
  18. public class MyTest {  
  19.     public static void main(String[] args) {  
  20.         try {  
  21.             Mongo conn = new Mongo("127.0.0.1");                    // 创建数据库连接  
  22.               
  23.             DB local = conn.getDB("local");                         // 得到数据库  
  24.               
  25.             boolean auth = local.authenticate("doc1", "110210121".toCharArray()); // 用户验证  
  26.               
  27.             if(auth){ // 如果用户名密码验证成功  
  28.                 System.out.println("成功.......");  
  29.                 DBCollection col = local.getCollection("collor");   // 获得表  
  30.                 select(col);  
  31.             }  
  32.                
  33.         } catch (Exception e) {  
  34.             e.printStackTrace();  
  35.         }  
  36.     }  
  37.   
  38.     /** 查询 */  
  39.     private static void select(DBCollection col) {  
  40.         DBObject conditions = new BasicDBObject();              // 条件类  
  41.         Integer[] num = {10,99};  
  42.           
  43. //      conditions.put("collor", "red");                        // 等于  
  44. //      conditions.put("size", new BasicDBObject("$gt", 5));    // gt(>), lt(<), gte(>=), lte(<=), in(包含), nin((不包含)  
  45. //      conditions.put("size", new BasicDBObject("$gt", 5).append("$lt", 15)); // >5 and <15, (可以多个条件)  
  46. //      conditions.put("num", new BasicDBObject("$in", num));   // 无效  
  47. //      conditions.put("properties.skills", "java");            // 子查询:list  
  48. //      conditions.put("properties.age", 23);                   // 子查询:map  
  49. //      DBCursor ite = col.find().skip(1).limit(2);             // 取范围  
  50.           
  51.         DBCursor ite = col.find(conditions);        // 结果集(属性条件:无条件查询所有)  
  52.         DBCursor ite_ = col.find(new BasicDBObject  // 结果集(直接条件)  
  53.                  ("$where", "this.size==10")); //>, <, >=, <=, ==  
  54.   
  55.         while(ite.hasNext()){  
  56.             System.out.println(ite.next());  
  57.         }  
  58.         System.out.println("............");  
  59.           
  60.         // =========== 模糊查询:只能用正则 ============  
  61.         Pattern john = Pattern.compile("ed");                   // 正则  
  62.         BasicDBObject query = new BasicDBObject("collor", john);   
  63.         DBCursor ite2 = col.find(query);  
  64.         while(ite2.hasNext()){  
  65.             System.out.println(ite2.next());  
  66.         }  
  67.     }  
  68. }  
JAVA下载如何操作? java 字符串操作! 用Java对LDAP服务器进行操作 问Java的statement.executeQuery()操作 一个关于数据操作的java问题 JAVA中对文件的操作有些怪问题 E398手机的JAVA怎么操作(高分) Java语言的简单介绍和现时操作运用? 急!!!java程序中文件的删除操作 JAVA 关于ACCESS的删除操作,这个地方要怎么写? 查java string类的一个操作组件 ???JAVA??? 如何在Windows 2000操作中安装Java 2 sdk1.4.2并进行环境配置 java中对数据库操作时,prepareStatement的Statement区别是什么? 在java中怎样模拟指针这一操作,还有指向函数的指针? 请问有什么好的关于java 操作xml的书吗?? E680i,不知操作了啥,自带游戏图标变为了JAVA默认图标 JAVA问题:如何在A窗口中操作B窗口的打开和关闭 JAVA中如何实现对char的数组元素做增减操作(利用ascii) 请问我的索爱w550c只要一安装或下载java程序就说操作失败是怎么回事,怎么解决 用java实现字符串中操作符的分隔该怎么编写语句,例如1+234+4 用JAVA的Applet编写小程序,但是想要使用数据流保存数据时却无法实现。是不是Applet不能对文件进行操作? 如何用JAVA截取本地机器某一端口发送出去的数据包?最好现说说如何对截取到的数据包进行操作(分析) 我的手机是MOTO L7 我用MotoMidMan安装java程序 显示的是 不支持的平台 无法操作 这该怎么办啊