文档章节

mongdb的基本操作

小翔
 小翔
发布于 2014/11/14 17:22
字数 736
阅读 41
收藏 0
点赞 0
评论 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
博文 39
码字总数 19875
作品 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
MongoDB之使用案例(项目总结)

项目中使用了mongodb来存储热点文章的url和一些信息 1.maven坐标 Spring配置 mongodb操作字符 2. MongoDao.java 公用mongodb类可继承 3.HotArticleDao.java  4.HotArticleDaoImpl mongd...

满小茂
2016/08/24
298
0
MongDB概述

1. 什么是NoSQlNoSQL:Not Only SQL,本质也是一种数据库的技术,相对于传统数据库技术NoSQL不会遵循一些SQL的约束,比如: 2. NoSQL优点: 3. NoSQL缺点: 4. NoSql数据库分类5. Mongodb的基...

LMB520Q
01/07
0
0
Node.js+Mongodb如何获取Json数据格式中属性的值

用Node.js搭建服务器和Mongodb数据库,在服务器端对数据库执行查询操作后返回的是Json数据,如何获取Json数据中每个属性的值?例如下图 如何获取array这个属性的值?Mongdb数据库用的是Mongo...

潘仔
2015/10/14
2K
3
EJDB 1.1.19 发布,嵌入式JSON数据库引擎

EJDB 1.1.19 新增 MongDB 更新定位操作符 (ticket #91) ,该功能等待已久。 EJDB 是一个嵌入式的 JSON 数据库引擎,旨在提供快速的类 MongoDB 的嵌入式数据库,可用于 C/C++ 应用程序中。主要...

oschina
2013/08/20
502
0
论坛的个位老大,这个问题你们遇到过么

在此,跪拜 你们有木有一个springmvc+mybates+maven+mongdb 的框架!!! 以前是用的mysql整合的 mongdb跟mysql、oracle等不一样 请大神发一个整合的,让小弟参考参考 以前的整合 spring.xml...

开源oschina
2014/05/07
282
5

没有更多内容

加载失败,请刷新页面

加载更多

下一页

关于DCL双重锁失效及解决方案

关于DCL双重锁失效及解决方案 Double Check Lock (DCL)实现单例 DCL 方式实现单例的优点是既能够在需要时才初始化单例,又能够保证线程安全,且单例对象初始化后调用getInstance方法不进行...

DannyCoder
12分钟前
0
0
PowerDesigner 16.5 安装配置

PowerDesigner16.5破解版是一款业内领先且开发人员常用的数据库建模工具,PowerDesigner可以从物理和概念两个层面设计数据库,方便用户制作处清晰直观的数据流程图和结构模型,欢迎有需要的朋...

Gibbons
37分钟前
0
0
前端Tips: 创建, 发布自己的 Vue UI 组件库

创建, 发布自己的 Vue UI 组件库 前言 在使用 Vue 进行日常开发时, 我们经常会用到一些开源的 UI 库, 如: Element-UI, Vuetify 等. 只需一行命令, 即可方便的将这些库引入我们当前的项目: n...

ssthouse_hust
今天
1
0
大数据教程(2.13):keepalived+nginx(多主多活)高可用集群搭建教程【自动化脚本】

上一章节博主为大家介绍了目前大型互联网项目的keepalived+nginx(主备)高可用系统架构体系,相信大家应该看了博主的文章对keepalived/nginx技术已经有一定的了解,在本节博主将为大家分享k...

em_aaron
今天
4
0
Git 2.18版本发布:支持Git协议v2,提升性能

在最新的官方 Git 客户端正式版2.18中添加了对 Git wire 协议 v2 的支持,并引入了一些性能与 UI 改进的新特性。在 Git 的核心团队成员 Brandon Williams 公开宣布这一消息前几周,Git 协议 ...

六库科技
今天
0
0
Java8新特性之接口

在JDK8以前,我们定义接口类中,方法都是抽象的,并且不能存在静态方法。所有的方法命名规则基本上都是 public [返回类型] [方法名](参数params) throws [异常类型] {}。 JDK8为接口的定义带...

developlee的潇洒人生
今天
0
0
aop + annotation 实现统一日志记录

aop + annotation 实现统一日志记录 在开发中,我们可能需要记录异常日志。由于异常比较分散,每个 service 方法都可能发生异常,如果我们都去做处理,会出现很多重复编码,也不好维护。这种...

长安一梦
今天
2
0
将博客搬至CSDN

AHUSKY
今天
2
0
Python web框架Django学习(1)

1.Django简介 (1)Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。Django是一个开放源代码的Web应用框架,由Python写成。 (2...

十年磨一剑3344
今天
0
0
Databook-数据之书

Databook-数据之书 用于数据分析的Jupyter Notebooks。 不需购买服务器,快速开始自己的数据分析过程。 源码:https://github.com/openthings/databook 作者:openthings,https://github.co...

openthings
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部