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