mongodb

java 对mongodb的操作
1.1Java连接mongodb数据库 
  
1.1.1连单台mongodb   Mongo mg = newMongo();//默认连本机127.0.0.1  端口为27017     Mongo mg = newMongo(ip);//可以指定ip 端口默认为27017 
Mongo mg = newMongo(ip,port);//也可以指定ip及端口号
  1.1.2连双台mongodb   //ip为主机ip地址,port为端口号,dataBaseName相当于数据库名 DBAddress left = new DBAddress("ip:port/dataBaseName"); 
 DBAddress right = new DBAddress("ip:port/dataBaseName"); 
//若一个mongodb出现问题,会自动连另外一台 Mongo mongo = new Mongo(left, right);  1.1.3连多台mongodb  
List<ServerAddress> mongoHostList = newArrayList<ServerAddress>(); mongoHostList.add(newServerAddress("ip",port)); mongoHostList.add(newServerAddress("ip",port)); mongoHostList.add(newServerAddress("ip",port));
 Mongo mg = newMongo(mongoHostList);  


2.1获取mongodb的db 

dataBaseName相当于关系数据库里的数据库名,mongodb中若没有该数据库名也不会报错,默认mongodb会建立这个数据库名,为空。 
 DB db = mg.getDB(dataBaseName); //注意:mongodb区分大小写,程序中一定要注意  2.2mongodb的db安全认证  
若这个时候要想访问db中的collection(相当于关系数据库里的表),就必须通过安全认证才可以访问,否则后台会报您没有通过安全认证。 
  //安全认证java代码 返回true表示通过,false表示没通过不能进行操作
 boolean auth =db.authenticate("userName", "password".toCharArray()); 
 3.1得到mongodb中的db的collection   
DBCollection users = db.getCollection(tableName);   
参数tableName相当于关系数据库里的表名,若mongodb中没有该tableName,默认会创建该tableName,为空  
 3.2mongodb中的db的collection自增长主键   Mongodb中也像传统的关系数据库里表一样,有主键(_id)概念,用来唯一标识他们。当用户往collection中插入一条新记录的时候,  如果没有指定_id属性,那么mongodb会自动生成一个ObjectId类型的值,保存为_id的值。   3.3java对collection进行插入操作  
 3.3.1第一种插入方式 
 DBObject data1 = newBasicDBObject(); data1.put("cust_Id", "123456"); data1.put("is_Show", 1);  data1.put("start_time", newDate()); 


users.insert(data1);//等同于users.save(data1); 

  3.3.2第二中插入方式 
BasicDBObjectBuilderdata1 =BasicDBObjectBuilder.start().add(...).add(...);   users.insert(data1.get());//等同于users.save(data1.get()); 
3.3.3第三种插入方式  Map<String, Object> data1 = new HashMap<String, Object>(); data1.put(...); ……    users.insert(new BasicDBObject(data1));//等同于users.save(new BasicDBObject(data1) );
  3.3.4第四中插入方式  String json = "{'database': 'mkyongDB','table' : 'hosting'," +  "'detail' : {'records' : 99, 'index' : 'vps_index1', 'active' :'true'}}}"; DBObject data1 = (DBObject)JSON.parse(json); users.insert(data1);//等同于users.save(data1); 
3.4java对collection的查询操作
  ====================================  DBObject fields = new BasicDBObject(); fields.put("_id", false); fields.put("tag", true); fields.put("tv_sec", true);


DBCursor cur = users.find(query, fields); 可以用来过滤不需要获取的字段, 减少IO ====================================
3.4.1查询所有的数据find()   DBCursor cur = users.find(); while(cur.hasNext()){...}  
3.4.2查询id大于等于1的记录,并且只取10条记录  DBCursor cur = users.find(newBasicDBObject("_id",newBasicDBObject("$gte",1))).limit(10);
3.4.3查询id大于等于1的记录,并按id进行降序-1表示降序,1升序。  DBCursor cur = users.find(new BasicDBObject("_id",newBasicDBObject("$gte",1))).sort(newBasicDBObject("_id",-1));   3.4.4查询id大于等于1的记录,并跳过前10条记录显示 相当于id>10  DBCursor cur = users.find(newBasicDBObject("_id",newBasicDBObject("$gte",1))).skip(10);
  3.4.5查询id大于等于1的记录,跳过前10条记录并且只显示10条记录。相当//于分页功能where id>10 and id<=20  DBCursor cur = users.find(newBasicDBObject("_id", newBasicDBObject("$gte",1))).skip(10).limit(10); 
3.4.6查询id大于等于1的所有记录数 返回int型  users.find(newBasicDBObject("_id",newBasicDBObject("$gte",1))).count()


3.4.7findAndRemove() 查询_id=30000的数据,并且删除  users.findAndRemove(newBasicDBObject("_id", 30000)); 
3.5java对collection的更新操作   查询id为300的记录,将cust_Id的值更新为6533615,一定要注意大小写,以及数据//类型,返回值为int表示所影响的记录条数可以用 users.findOne(newBasicDBObject("_id",300));查看下,会发现这条记录//只返回两个字段了,分别为_id,cust_Id,别的字段都删除了。  users.update(newBasicDBObject("_id",300), newBasicDBObject ("cust_Id","6533615")).getN();   //这种写法可以实现只更新id为300的cust_Id值为6533615,而不删除这条记录的别的字//段属性  users.update(newBasicDBObject("_id",300), newBasicDBObject("$set",newBasicDBObject("cust_Id","6533615"))).getN();
3.6java对collection的删除操作  //移除cust_Id为6533615的数据。注意 用remove方法不释放磁盘空间, //mongodb只在collection中做了标志,没有正在删除。  users.remove(newBasicDBObject("cust_Id","6533615")).getN();  //移除id>=1的数据  users.remove(newBasicDBObject("_id",new BasicDBObject("$gte",1))).getN();  //移除整个collection,drop也不释放磁盘空间 users.drop();  
mongodb 小计(查询和导出) $in $gt $lt   分类: 数据库开发技术


mongodb 查询集合之内  > db.roothomesCol.find({"ID":{"$in":[48493297,48701795]}}); mongodb 查询大小之间  > db.roothomesCol.find({"ID":{$gt : 48493297, $lt : 48701795}});    mongo IN 关键字,在集合里面索引限定范围  roothomes $ /mongo/mongodb-2.0.2/bin/mongoexport --host 127.0.0.1 --port 30000 --db roothomesDB -c roothomesCol --query '{"ID":{"$in":[48493297,48701795]}}' --fields _id,AB,AC --csv >  roothomes.csv   mongodb $gt $lt 关键字,在集合里面索引限定范围  roothomes $ /mongo/mongodb-2.0.2/bin/mongoexport --host 127.0.0.1 --port 30000 --db roothomesDB -c roothomesCol --query '{"ID":{$gt : 48420000, $lt : 48430000}}' --fields _id,AB,AC  --csv >  roothomes.csv

你可能感兴趣的:(mongodb)