文档章节

mongdb的基本操作

小翔
 小翔
发布于 2014/11/14 17:22
字数 736
阅读 45
收藏 0
package com.xxx.test;
import java.net.UnknownHostException;
import java.util.List;
import java.util.Set;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
public class MongoDbTest {
 private static Logger logger = LoggerFactory.getLogger(MongoDbTest.class);
 public DB db;
 MongoClient mongoClient;
 @Before
 public void befor() {
  try {
   mongoClient = new MongoClient("localhost", 27017);
   db = mongoClient.getDB("zxdb_wf");
   // boolean auth = db.authenticate(myUserName, myPassword);
  } catch (UnknownHostException e) {
   logger.error(e.getMessage(), e);
  }
 }
 @After
 public void after() {
  mongoClient.close();
 }
 /**
  * 测试显示当前库的集合
  */
 @Test
 public void showCollections() {
  Set<String> colls = db.getCollectionNames();
  for (String s : colls) {
   System.out.println(s);
  }
 }
 /**
  * 测试新增
  */
 @Test
 public void insert() {
  DBCollection coll = db.getCollection("serv_trans");
  for (int i = 1; i < 101; i++) {
   BasicDBObject doc = new BasicDBObject("prov", "23")
     .append("serv_id", 998300500000003123l + i)
     .append("cust_id", 991100110000000702l + i)
     .append("product_id", 235010000 + i)
     .append("agreement_id", "20140420004919347232");
   coll.insert(doc);
  }
 }
 @Test
 public void find() {
  DBCollection coll = db.getCollection("serv_trans");
  DBObject obj = coll.findOne();
  System.out.println(obj);
  DBObject query = new BasicDBObject();
  query.put("prov", "24");
  obj = coll.findOne(query);
  System.out.println(obj);
  // 注意查不到结果是直接为null;
  query = new BasicDBObject();
  query.put("prov", "23");
  query.put("serv_id", 998300500000003124l);
  obj = coll.findOne(query);
  System.out.println(obj);
  // 如果类型不对,是查不到数据的。通过测试得知
  query = new BasicDBObject();
  query.put("prov", "23");
  query.put("serv_id", "998300500000003124");
  obj = coll.findOne(query);
  System.out.println(obj);
  // or查询条件查询
  BasicDBList orquery = new BasicDBList();
  query = new BasicDBObject();
  query.put("serv_id", 998300500000003123l);
  orquery.add(query);
  query = new BasicDBObject();
  query.put("serv_id", 998300500000003124l);
  orquery.add(query);
  DBObject queryKeys = new BasicDBObject();
  queryKeys.put("$or", orquery);
  DBCursor dbCursor = coll.find(queryKeys);
  System.out.println(queryKeys);
  while (dbCursor.hasNext()) {
   obj = dbCursor.next();
   System.out.println("输出结果:" + obj);
  }
  // or查询条件查询
  //构建or查询
  orquery = new BasicDBList();
  query = new BasicDBObject();
  query.put("serv_id", 998300500000003123l);
  orquery.add(query);
  query = new BasicDBObject();
  query.put("serv_id", 998300500000003124l);
  orquery.add(query);
  DBObject queryref = new BasicDBObject();
  queryref.put("$or", orquery);
  //购建显示列
  DBObject querykey = new BasicDBObject();
  querykey.put("_id", 0);
  querykey.put("prov", 1);
  querykey.put("serv_id",1);
  
  dbCursor = coll.find(queryref,querykey);
  System.out.println(queryref);
  System.out.println(queryKeys);
  while (dbCursor.hasNext()) {
   obj = dbCursor.next();
   System.out.println("输出结果:" + obj);
  }
  
  //进行分页查询(可以看到是skip(i)这个i是指过滤了i条记录)
  System.out.println("分页显示处理");
  query = new BasicDBObject();
  query.put("prov", "23");
  List<DBObject> list= coll.find(query).skip(0).limit(5).toArray();
  for(DBObject dbobj:list){
   System.out.println("输出结果:" + dbobj);
  }
  System.out.println("分页显示处理1");
  list= coll.find(query).skip(2).limit(5).toArray();
  for(DBObject dbobj:list){
   System.out.println("输出结果:" + dbobj);
  }
  
 }
 
 /**
  * 更新操作
  */
 @Test
 public void update(){
  DBCollection coll = db.getCollection("serv_trans");
  
  DBObject query = new BasicDBObject();
  query.put("serv_id", 998300500000003125l);
  //构建显示列
  DBObject update = new BasicDBObject()
          .append("serv_id", 998300500000003125l)
    .append("cust_id", 991100110000000704l)
    .append("product_id", 235010002l)
    .append("agreement_id", "20140420004919347235");
  DBObject obj = coll.findOne(query);
  System.out.println(obj);
  obj = coll.findAndModify(query, update);
  System.out.println(obj);
  //可以看到这个findAndModify查到的结果是query查询出来的结果,不是显示的是更新后的结果,这个有点坑
  obj = coll.findOne(query);
  System.out.println(obj);
  //findAndModify有更多重写方法,可以让它返回修改后的数据
  //update()方法也是有的
  //http://api.mongodb.org/java/current/overview-summary.html
 }
 
 @Test
 public void delete(){
  DBCollection coll = db.getCollection("serv_trans");
  
  DBObject query = new BasicDBObject();
  query.put("serv_id", 998300500000003130l);
  DBObject obj = coll.findOne(query);
  System.out.println(obj);
  /**
  coll.remove(query);
  obj = coll.findOne(query);
  System.out.println(obj);
  */
  //执行以下的删除方法后进行查询很诡异
  obj=coll.findAndRemove(query);
  System.out.println(obj);
  obj = coll.findOne(query);
  System.out.println(obj);
  //第一次3个都能打印出来,为什么第一次的最后一个打印会有数据
  //第二次只能打印现来2个,为什么第二次的时候又正确了,第三的一打印又没有了。
  //第三次全为null,为什么第3的一次才全部为null了
  //findAndRemove不大好用,有空再研究......
 }
 
 
}

© 著作权归作者所有

共有 人打赏支持
小翔
粉丝 10
博文 41
码字总数 20038
作品 0
江北
程序员
私信 提问
在JAVA中使用MongoDB

首先,下载mongdb对JAVA的支持,点击这里下载驱动包,这里博主下载的是2.10.1版。 mongdb版本为2.4.9 在项目中导入该驱动包。 打开shell,在终端输入mongo,显示如下 只有默认的三个数据库。...

kakakakaka
2014/11/23
0
2
Node.js和Geddy初学者指南 - 第三部分:使用Mongdb持久化你的数据

日期:2012-4-12 来源:GBin1.com 在这个三个部分的教程中,我们教大家使用Node.js和Geddy来创建了一个todo的管理应用,上一篇我们将数据保存在内存中,在这个系列最后一篇文章中,我们将介绍...

gbin1
2012/04/13
0
0
Mongodb的基本用法

Mongodb的开启 默认启动: $ ./mongodb 默认数据保存路径:/data/db/ 默认端口:27017 修改默认路径: --dbpath $ ./mongdb --dbpath /mongodb/ 把数据存储位置指向一个自己的目录/mongodb/...

ada_young
2016/02/26
41
0
初识MongoDB-用法和用途

用意:记录一下自己学习MongoDB的一些体会. 适合范围, 安装和用法. 一. MongoDB相关 JavaScript统一天下 JavaScript正在快节奏地统一整个web开发流程. JvaScript是WEB前端开发的唯一依靠, 依赖...

清风漫步
2014/02/21
0
0
mongdb 复制集+仲裁(带权限认证)

一、环境 1、架构图 2、部署详细 10.10.17.26:27000 (primary)10.10.17.27:27000 (secondary)10.10.2.74:27000 (arbiter) 3、软件版本 mongdb :2.6.11系统:centos 6.6 二、安装配置 ...

navyaijm2012
2015/08/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一文了解JVM全部垃圾回收器,从Serial到ZGC

《对象搜索算法与回收算法》介绍了垃圾回收的基础算法,相当于垃圾回收的方法论。接下来就详细看看垃圾回收的具体实现。 上文提到过现代的商用虚拟机的都是采用分代收集的,不同的区域用不同...

公众号_Zack说码
18分钟前
6
0
用七牛云做小程序直播不用资质只需要公安备案

一般做小程序需要到live-pusher和live-player 分别用于推拉流但要求太严格一般商户满足不了这种情况 暂只针对国内主体如下类目的小程序开放,需要先通过类目审核,再在小程序管理后台,“设置...

xiaogg
22分钟前
2
0
spring2

Spring第二天 回顾: IOC:控制反转,把对象的创建权利反转给spring框架。 IOC的作用:解耦 Spring中的工厂: ApplicationContext ClassPathXmlApplicationContext FileSystemXmlApplication...

码农屌丝
32分钟前
3
0
Postman请求向后台传递List数据

前后台分离项目,使用Postman对写好的接口进行测试,请求类型为Post需要向后台传递List<String> list数据下面是后台控制层的java代码 @RequestMapping(value = "/del",method = RequestMetho...

王子城
37分钟前
4
0
Java并发编程的艺术:Condition的实现分析

ConditionObject是同步器AbstractQueuedSynchronizer的内部类,因为Condition的操作需要获取相关联的锁,所以作为同步器的内部类也较为合理。每个Condition对象都包含着一个队列(以下称为等...

陈刚生
37分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部