`
pengfeifei26
  • 浏览: 245637 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    Linux安装mongodb客户端

    sudo vim /etc/yum.repos.d/mongodb-org-4.2.repo 写入: [mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck=1 enabled=1 gpg...

    mongodb安装包和compass

    MongoDB是一款开源、分布式、高性能的NoSQL数据库,它不使用传统的表格和列式结构来存储数据,而是采用键值对、文档、集合和图形数据模型。这种设计使得MongoDB在处理非结构化和半结构化数据时表现出色,特别适合大...

    mongodb-测试数据

    MongoDB是一种流行的开源、分布式文档数据库,常被用于构建高性能、可扩展的应用程序。这个“mongodb-测试数据”压缩包显然包含了一些用于测试MongoDB功能的样例数据集,特别是针对增、删、改、查(CRUD)操作的学习...

    linux安装mongodb教程

    /usr/local/mongodb/mongodb-linux-2.0.7/bin/mongod --dbpath=/usr/local/mongodb/data/db --logpath=/usr/local/mongodb/mongodb-linux-2.0.7/logs/mongodb.log --logappend --port=27017 --fork 知识点 6:配置...

    spring-data使用mongodbTemplate对MongoDB进行读写操作

    Spring Data MongoDB是一个强大的Java库,它为开发人员提供了一种简单的方式来访问和操作MongoDB数据库。这个库是Spring Data框架的一部分,旨在简化数据访问层的实现,尤其在使用NoSQL数据库如MongoDB时。MongoDB...

    MongoDB实验 - .docx

    MongoDB 实验报告 本实验报告旨在详细介绍 MongoDB 的安装、配置和基本操作步骤,本报告基于 CentOS 7 系统,通过一步一步的截图和文字说明,帮助读者快速掌握 MongoDB 的使用。 一、安装 MongoDB 首先,我们需要...

Global site tag (gtag.js) - Google Analytics