文档章节

mongdb的基本操作

小翔
 小翔
发布于 2014/11/14 17:22
字数 736
阅读 49
收藏 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
博文 42
码字总数 20132
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 没时间 没头发 但有钱

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @开源中国总经办主任 :分享齐一的单曲《这个年纪》 《这个年纪》- 齐一 手机党少年们想听歌,请使劲儿戳(这里) @肿肿卷 :我真的可以睡一天...

小小编辑
11分钟前
0
0
Django进阶 1.1 ORM基础—ORM 1.2.1 增删改查之查询 1.2.2 删改增 (1) 1.2.3 删改增 (2)

ORM基础 ORM是Django操作数据库的API,Django的作者将sql语句封装在里面供我们使用。 我们前面还提到过Django提供一个模拟数据库的工具,sqlite,供我们学习测试使用。 如果我们想使用mysql...

隐匿的蚂蚁
今天
1
0
Windows 上安装 Scala

在安装 Scala 之前需要先安装 Java 环境,具体安装的详细方法就不在这里描述了。 您可以自行搜索我们网站中的内容获得其他网站的帮助来获得如何安装 Java 环境的方法。 接下来,我们可以从 ...

honeymose
今天
3
0
数据库篇多表操作

第1章 多表操作 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系...

stars永恒
今天
3
0
nginx日志自动切割

1.日志配置(Nginx 日志) access.log----记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;error.log------记录服务器错误的日志 #配置日志存储路径:location / {      a...

em_aaron
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部