进mongo

mongo

先添加admin表的账号密码

. use admin
.
db.createUser(
{
user: "admin",
pwd: "admin",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
. db.auth('admin','admin')
在admin登录情况下,切换到自己数据库操作 . use test
. db.createUser({user:'test',pwd:'test',roles:[{role:"dbOwner",db:"test"}]})
退出重新登录 . mongo
. use test
. db.auth('test','test')
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase; import org.bson.Document;
import org.bson.types.ObjectId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Repository; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; /**
* mongodb数据库操作
*
* @author Duan Yong
* @since 2016/11/11.
*/
@Repository
@SuppressWarnings("unchecked")
public class MongoDAO implements InitializingBean { private static Logger LOGGER = LoggerFactory.getLogger(MongoDAO.class);
private static MongoDatabase db; /**
* 根据名字获取数据库表
*/
public MongoCollection getCollection(String name) {
return db.getCollection(name);
} /**
* 返回文档list
*/
public List<Document> find(String collectionName, Document query, Document key, Document order, int skip,
int limit) {
MongoCollection collection = db.getCollection(collectionName);
List<Document> result = new ArrayList<>();
if (query == null) {
return result;
}
FindIterable<Document> iterable = collection.find(query);
if (order != null) {
iterable = iterable.sort(order);
}
if (skip > 0) {
iterable = iterable.skip(skip);
}
if (limit > 0) {
iterable = iterable.limit(limit);
}
if (key != null) {
iterable = iterable.projection(key);
}
iterable.into(result);
return result;
} /**
* 根据_id删除记录
*/
public void deleteById(String collectionName, String id) {
MongoCollection<Document> collection = db.getCollection(collectionName);
collection.deleteOne(new Document("_id", new ObjectId(id)));
} /**
* 根据查询条件删除记录
*/
public void delete(String collectionName, Document query) {
MongoCollection<Document> collection = db.getCollection(collectionName);
collection.deleteMany(query);
} /**
* 根据查询条件返回第一条
*
* @param collectionName,数据库名
* @param query,数据库表中记录id
*/
public Document findOne(String collectionName, Document query) {
MongoCollection<Document> collection = db.getCollection(collectionName);
return collection.find(query).first();
} /**
* 插入一条记录到数据库
*/
public void insert(String collectionName, Document document) {
MongoCollection collection = db.getCollection(collectionName);
collection.insertOne(document);
} /**
* 更新记录
*/
public void updateById(String collectionName, ObjectId id, Document document) {
MongoCollection collection = db.getCollection(collectionName);
collection.updateOne(new Document("_id",id), new Document("$set", document));
} @Override
public void afterPropertiesSet() throws Exception {
MongoClientOptions mongoClientOptions = new MongoClientOptions.Builder()
.connectionsPerHost(PropertiesUtil.getInt("mongoDB.option.activeConnectionCount", 10))
.connectTimeout(PropertiesUtil.getInt("mongoDB.option.connectTimeout"))
.socketTimeout(PropertiesUtil.getInt("mongoDB.option.socketTimeout"))
.maxWaitTime(PropertiesUtil.getInt("mongoDB.option.maxWaitTime"))
.threadsAllowedToBlockForConnectionMultiplier(
PropertiesUtil.getInt("mongoDB.option.threadsAllowedToBlockForConnectionMultiplier"))
.build();
String address = PropertiesUtil.get("mongoDB.address");
String database = PropertiesUtil.get("mongoDB.database");
String user = PropertiesUtil.get("mongoDB.user");
String pwd = PropertiesUtil.get("mongoDB.pwd");
try {
List<ServerAddress> serverAddresses = new ArrayList<>();
for (String add : address.split(" ")) {
serverAddresses.add(new ServerAddress(add));
}
MongoCredential credential = MongoCredential.createCredential(user, database, pwd.toCharArray());
MongoClient mongoClient = new MongoClient(serverAddresses, Arrays.asList(credential), mongoClientOptions);
db = mongoClient.getDatabase(database);
LOGGER.info("init mongoDao : " + address);
} catch (Exception e) {
LOGGER.error("init mongoDao error", e);
}
}
}

PS:propertisUtil自己写一个吧

mongo小记的更多相关文章

  1. MongoDB 小记

    之前本人说过一款非关系型数据库的代表 Redis 的 < Redis 小记 >文章,觉得意犹未尽,今天就来介绍一款数据库 MongoDB ,先来看一下 MongoDB是一款基于分布式文件存 ...

  2. 谈一谈NOSQL的应用,Redis/Mongo

    1.心路历程 上年11月份来公司了,和另外一个同事一起,做了公司一个移动项目的微信公众号,然后为了推广微信公众号,策划那边需要我们做一些活动,包括抽奖,投票.最开始是没有用过redis的,公司因为考虑 ...

  3. [原]Paste.deploy 与 WSGI, keystone 小记

    Paste.deploy 与 WSGI, keystone 小记 名词解释: Paste.deploy 是一个WSGI工具包,用于更方便的管理WSGI应用, 可以通过配置文件,将WSGI应用加载起来. ...

  4. MongoDB分组汇总操作,及Spring data mongo的实现

    转载请在页首注明作者与出处 一:分组汇总 1.1:SQL样例 分组汇总的应用场景非常多,比如查询每个班级的总分是多少,如果用关系形数据库,那么sql是这样子的 ),class from score g ...

  5. mongo DB for C#

    (1)Download the MongoDB C#驱动. http://www.nuget.org/packages/mongocsharpdriver/. (2) Add Reference to ...

  6. MySql 小记

    MySql  简单 小记 以备查看 1.sql概述 1.什么是sql? 2.sql发展过程? 3.sql标准与方言的关系? 4.常用数据库? 5.MySql数据库安装? 2.关键概念 表结构----- ...

  7. Mongo基础使用,以及在Express项目中使用Mongoose

    MongoDB的基本使用 MongoDB特点: 使用BSON存储数据 支持相对丰富的查询操作(相对其他nosql数据库) 支持索引 副本集(支持多个实例/多个服务器运行同个数据库) 分片(数据库水平扩 ...

  8. 【mongo】mongoVUE使用

    1.查询存在字段"test"的项 {"test":{$exists:true}} 2.在表中插入字段 {$set:{"}} 3.正则匹配 {" ...

  9. Git小记

    Git简~介 Git是一个分布式版本控制系统,其他的版本控制系统我只用过SVN,但用的时间不长.大家都知道,分布式的好处多多,而且分布式已经包含了集中式的几乎所有功能.Linus创造Git的传奇经历就 ...

随机推荐

  1. Buffer Pool--数据库内存结构

    数据库从操作系统申请到的内存可分为两部分:1.缓存池内存(数据页和空闲页)2.非缓存池内存(线程/DLL/连接服务器等) Note:通过服务器实例属性设置的最大/最小服务器内存是指缓存池内存Note: ...

  2. airport 抓包

    链接airport命令: ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources ...

  3. 对Integer类中的私有IntegerCache缓存类的一点记录

    对Integer类中的私有IntegerCache缓存类的一点记录 // Integer类有内部缓存,存贮着-128 到 127. // 所以,每个使用这些数字的变量都指向同一个缓存数据 // 因此可 ...

  4. 一起学习《C#高级编程》1--类型的安全性

    感觉写随笔第一天就遇到了困难,感觉好费时间啊,回宿舍就得8点多,然后只能看一点书.之后写随笔,首先得回忆,然后组织,最后打字.还有就是宿舍迎来的断网的日子,特别不方便,只能第二天去公司发.本人目前是. ...

  5. “全栈2019”Java多线程第一章:认识多线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  6. 【javascript】判断是否微信浏览器的最佳实践

    根据判断UA中是否有关键字micromessenger,有的话则是微信内置浏览器 用Chrome的iPhone5模拟测试 //判断是否微信登陆 function isWeiXin() { var ua ...

  7. Android 线刷小白教程

    Android 线刷小白教程 再说一遍,绝不使用刷机精灵等软件. 一.概念 安卓系统一般把rom芯片分成7个区,如果再加上内置sd卡这个分区,就是8个: hboot分区----------负责启动. ...

  8. maven指定本地的文件包

    maven指定本地的文件包 案例: <!-- CKFinder begin --> <dependency> <groupId>net.coobird</gr ...

  9. isUserAMonkey? android真逗

    QA报了个问题,说是无线热点下面的开关都没了,看了看代码,原来这是android的保护机制. 在涉及到用户信息的功能上,android会通过ActivityManagerNative.isUserAM ...

  10. Linux之du命令的使用

    du的用法 du命令用来查看目录或文件所占用磁盘空间的大小.常用选项组合为:du -sh du常用的选项: -h:以人类可读的方式显示 -a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘 ...