文档章节

mongdb的基本操作

小翔
 小翔
发布于 2014/11/14 17:22
字数 736
阅读 42
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

Java异常处理最佳实践

总结一些Java异常的处理原则 Java异常处理最佳实践 不要忘记关闭资源 在finally里关闭资源 public void readFile() { FileInputStream fileInputStream = null; File file = new Fil...

yysue
34分钟前
0
0
00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
今天
4
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
6
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
122
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部