博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mongoDB JAVA操作
阅读量:6816 次
发布时间:2019-06-26

本文共 4546 字,大约阅读时间需要 15 分钟。

  hot3.png

类转换 
当把一个类对象存到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);

mport java.util.regex.Pattern;import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.DBCursor;import com.mongodb.DBObject;import com.mongodb.Mongo;/** * @author duanzc * @date:2010-12-23 下午05:34:24 * @version :1.0 * @类说明: */public class MyTest {	public static void main(String[] args) {		try {			Mongo conn = new Mongo("127.0.0.1");					// 创建数据库连接						DB local = conn.getDB("local");							// 得到数据库						boolean auth = local.authenticate("doc1", "110210121".toCharArray()); // 用户验证						if(auth){ // 如果用户名密码验证成功				System.out.println("成功.......");				DBCollection col = local.getCollection("collor");	// 获得表				select(col);			}			 		} catch (Exception e) {			e.printStackTrace();		}	}	/** 查询 */	private static void select(DBCollection col) {		DBObject conditions = new BasicDBObject();				// 条件类		Integer[] num = {10,99};		//		conditions.put("collor", "red");						// 等于//		conditions.put("size", new BasicDBObject("$gt", 5));	// gt(>), lt(<), gte(>=), lte(<=), in(包含), nin((不包含)//		conditions.put("size", new BasicDBObject("$gt", 5).append("$lt", 15)); // >5 and <15, (可以多个条件)//		conditions.put("num", new BasicDBObject("$in", num));	// 无效//		conditions.put("properties.skills", "java");			// 子查询:list//		conditions.put("properties.age", 23);					// 子查询:map//		DBCursor ite = col.find().skip(1).limit(2);				// 取范围				DBCursor ite = col.find(conditions); 		// 结果集(属性条件:无条件查询所有)		DBCursor ite_ = col.find(new BasicDBObject	// 结果集(直接条件)				 ("$where", "this.size==10")); //>, <, >=, <=, ==		while(ite.hasNext()){		    System.out.println(ite.next());		}		System.out.println("............");				// =========== 模糊查询:只能用正则 ============		Pattern john = Pattern.compile("ed");					// 正则		BasicDBObject query = new BasicDBObject("collor", john); 		DBCursor ite2 = col.find(query);		while(ite2.hasNext()){		    System.out.println(ite2.next());		}	}}

转载于:https://my.oschina.net/noday/blog/26290

你可能感兴趣的文章
关于域证书的发布CA和CRL的内容 (Windows 2008 Server R2 SP1)
查看>>
软件测试英语专业词汇汇总
查看>>
Java实现word文档在线预览,读取office(word,excel,ppt)文件
查看>>
python笔记(五)装饰器函数
查看>>
Permutations II
查看>>
Super Ugly Number
查看>>
(转载)UTF-8和GBK的编码方式的部分知识:重要
查看>>
convert RGB image to a 2x2 [GR;BG] Bayer pattern
查看>>
机器学习 -- 机器学习是什么?
查看>>
三台机器之间ssh互信配置
查看>>
mysql8.0.16二进制安装
查看>>
第一次课后作业
查看>>
ZooKeeper学习第三期---Zookeeper命令操作
查看>>
MFC MDI 窗口函数执行顺序
查看>>
2017ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)
查看>>
[代码]ural 1913 Titan Ruins: Old Generators Are Fine Too
查看>>
[转载]C++的顺序点(sequence point)和副作用(side effect)
查看>>
javascript 插入DOM节点
查看>>
【原】npm 常用命令详解
查看>>
Less学习
查看>>