进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自己写一个吧

最新文章

  1. 循序渐进redis(一) —— redis的安装及可视化工具的使用
  2. iOS开发中的各种错误
  3. poj3342Party at Hali-Bula(树形dp)
  4. Jsonp类
  5. seajs的那点事(很坑的事),和本白的一点事(更坑的事)
  6. 利用百度云盘API上传文件至百度云盘
  7. html3秒跳转
  8. sql常用语句--转载
  9. 《RESTful Web Services》第二章 识别资源
  10. 滑雪(POJ 1088 记忆化搜索)
  11. Idea查看并过滤某个接口或者类的实现
  12. FreeNAS:创建 CIFS 匿名共享
  13. Django forms表单 select下拉框的传值
  14. Linux---centos编译安装ffmpeg
  15. resful
  16. OpenGL——二次曲面函数(球面-圆锥面-圆柱面)
  17. tensorflow 根据节点名称获取节点
  18. [技术选型] dubbo
  19. CSS学习之定位
  20. WinForm 多语言处理

热门文章

  1. 一次HTTP通信过程
  2. .net core webapi 定义多版本与 Swagger 的文档输出
  3. Linq与数据库的连接显示查询(一)
  4. CF553C Love Triangles
  5. Sublime写作
  6. UnSafe类中的一些重要方法
  7. 【Oracle 12c】最新CUUG OCP-071考试题库(53题)
  8. 【OCP认证12c题库】CUUG 071题库考试原题及答案(28)
  9. spring利用注解方式实现Java读取properties属性值
  10. 数论入门2——gcd,lcm,exGCD,欧拉定理,乘法逆元,(ex)CRT,(ex)BSGS,(ex)Lucas,原根,Miller-Rabin,Pollard-Rho