linux:安装并使用mongo
1.下载mongo: curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz
2.解压: tar -zxvf mongodb-linux-x86_64-3.0.6.tgz
3.重新命名:mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb
4.添加环境变量: export PATH=<mongodb-install-directory>/bin:$PATH ,source /etc/profile 重新生效。
5.新建数据库目录: mkdir -p /data/db ,/data/db 是 MongoDB 默认的启动的数据库路径
6.启动mongodb: cd <mongodb-install-directory>/bin 进入bin目录,运行:./mongod
7.新开一个命令窗口,同样进入bin目录,运行 ./mongo 进入mongo shell
8.语法:
新建数据库runoob:use runoob ,切换到数据库 runoob,在下次写入数据时:db.runoob.insert({"name":"插入数据"}) ,自动创建数据库。
删除数据库runoob:use runoob ,切换到要删的数据库,再运行:db.dropDatabase()
更新数据:db.runoob.update({'conRolName':'value'},{$set:{'updateTitle':'updateValue'}}) ,这条语句只会修改第一条发现的文档,如果要修改多条相同的文档,则需要在后面添加设置{multi:true}
save() 方法:db.runoob.save({"_id":"value","title":"value"}),为全部值覆盖。
删除数据:db.runoob.deleteMany({"title":"value"}) ,删除多条数据 ,db.runoob.deleteOne({"title":"value"}) ,删除一条数据
查询数据:db.runoob.find().pretty() ,findOne()则返回一条数据。
db.runoob.find({$or:[{"title1":"value1"},{"title2": "value2"}]}).pretty() ,条件 or 查询。
db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty ,where likes>50 AND (by = '菜鸟教程' OR title = 'MongoDB 教程')'
JAVA连接MongoDB,代码如下:
导包:mongo-java-driver-3.2.2.jar
package mongo.connect; import java.util.ArrayList;
import java.util.List; import org.bson.Document;
import org.bson.conversions.Bson;
import org.bson.types.ObjectId; import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoClientOptions.Builder;
import com.mongodb.WriteConcern;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.DeleteResult; /**
* MongoDB工具类 Mongo实例代表了一个数据库连接池,即使在多线程的环境中,一个Mongo实例对我们来说已经足够了<br>
* 注意Mongo已经实现了连接池,并且是线程安全的。 <br>
* 设计为单例模式, 因 MongoDB的Java驱动是线程安全的,对于一般的应用,只要一个Mongo实例即可,<br>
* Mongo有个内置的连接池(默认为10个) 对于有大量写和读的环境中,为了确保在一个Session中使用同一个DB时,<br>
* DB和DBCollection是绝对线程安全的<br>
*
* @author gonglei 使用mongo-java-driver-3.0.2连接MongoDB数据库
* @date 2017-3-16
* @version 0.0.0
* @Copyright (c)2017-2018
*/
public enum MongoDBJDBC { /**
* 定义一个枚举的元素,它代表此类的一个实例
*/
instance; private MongoClient mongoClient; static { System.out.println("===============MongoDBUtil初始化========================"); String ip = "192.168.56.101";
int port = 27017;
instance.mongoClient = new MongoClient(ip, port);
// or, to connect to a replica set, with auto-discovery of the primary, supply a
// seed list of members
// 大部分用户使用mongodb都在安全内网下,但如果将mongodb设为安全验证模式,就需要在客户端提供用户名和密码: // ArrayList mongoCredentialList1 = new ArrayList();
// MongoCredential mongoCredential1 =
// MongoCredential.createScramSha1Credential(config.getUserName(),config.getDbName(),
// config.getPassword().toCharArray());
// mongoCredentialList1.add(mongoCredential1) // List<ServerAddress> listHost = Arrays.asList(new ServerAddress("localhost",
// 27017),new ServerAddress("localhost", 27018));
// instance.mongoClient = new MongoClient(listHost,mongoCredentialList1); Builder options = new MongoClientOptions.Builder();
// options.autoConnectRetry(true);// 自动重连true
// options.maxAutoConnectRetryTime(10); // the maximum auto connect retry time
options.connectionsPerHost(300);// 连接池设置为300个连接,默认为100
options.connectTimeout(15000);// 连接超时,推荐>3000毫秒
options.maxWaitTime(5000); //
options.socketTimeout(0);// 套接字超时时间,0无限制
options.threadsAllowedToBlockForConnectionMultiplier(5000);// 线程队列数,如果连接线程排满了队列就会抛出“Out of semaphores to get
// db”错误。
options.writeConcern(WriteConcern.MAJORITY);// 抛出网络错误异常、服务器错误异常;并等待一个主服务器完成写操作。
options.build();
} // -----------------------------------共用方法---------------------------------------------------
/**
* 获取DB实例 - 指定DB
*
* @param dbName
* @return
*/
public MongoDatabase getDB(String dbName) {
if (dbName != null && !"".equals(dbName)) {
MongoDatabase database = mongoClient.getDatabase(dbName);
return database;
}
return null;
} /**
* 获取collection对象 - 指定Collection
*
* @param collName
* @return
*/
public MongoCollection<Document> getCollection(String dbName, String collName) {
if (null == collName || "".equals(collName)) {
return null;
}
if (null == dbName || "".equals(dbName)) {
return null;
}
MongoCollection<Document> collection = mongoClient.getDatabase(dbName).getCollection(collName);
return collection;
} /**
* 查询DB下的所有表名
*/
public List<String> getAllCollections(String dbName) {
MongoIterable<String> colls = getDB(dbName).listCollectionNames();
List<String> _list = new ArrayList<String>();
for (String s : colls) {
_list.add(s);
}
return _list;
} /**
* 获取所有数据库名称列表
*
* @return
*/
public MongoIterable<String> getAllDBNames() {
MongoIterable<String> s = mongoClient.listDatabaseNames();
return s;
} /**
* 删除一个数据库
*/
public void dropDB(String dbName) {
getDB(dbName).drop();
} /**
* 查找对象 - 根据主键_id
*
* @param collection
* @param id
* @return
*/
public Document findById(MongoCollection<Document> coll, String id) {
ObjectId _idobj = null;
try {
_idobj = new ObjectId(id);
} catch (Exception e) {
return null;
}
Document myDoc = coll.find(Filters.eq("_id", _idobj)).first();
return myDoc;
} /** 统计数 */
public int getCount(MongoCollection<Document> coll) {
int count = (int) coll.count();
return count;
} /** 条件查询 */
public MongoCursor<Document> find(MongoCollection<Document> coll, Bson filter) {
return coll.find(filter).iterator();
} /** 分页查询 */
public MongoCursor<Document> findByPage(MongoCollection<Document> coll, Bson filter, int pageNo, int pageSize) {
Bson orderBy = new BasicDBObject("_id", 1);
return coll.find(filter).sort(orderBy).skip((pageNo - 1) * pageSize).limit(pageSize).iterator();
} /**
* 通过ID删除
*
* @param coll
* @param id
* @return
*/
public int deleteById(MongoCollection<Document> coll, String id) {
int count = 0;
ObjectId _id = null;
try {
_id = new ObjectId(id);
} catch (Exception e) {
return 0;
}
Bson filter = Filters.eq("_id", _id);
DeleteResult deleteResult = coll.deleteOne(filter);
count = (int) deleteResult.getDeletedCount();
return count;
} /**
* FIXME
*
* @param coll
* @param id
* @param newdoc
* @return
*/
public Document updateById(MongoCollection<Document> coll, String id, Document newdoc) {
ObjectId _idobj = null;
try {
_idobj = new ObjectId(id);
} catch (Exception e) {
return null;
}
Bson filter = Filters.eq("_id", _idobj);
// coll.replaceOne(filter, newdoc); // 完全替代
coll.updateOne(filter, new Document("$set", newdoc));
return newdoc;
} public void dropCollection(String dbName, String collName) {
getDB(dbName).getCollection(collName).drop();
} /**
* 关闭Mongodb
*/
public void close() {
if (mongoClient != null) {
mongoClient.close();
mongoClient = null;
}
System.out.println("===============MongoDBUtil关闭连接========================"); } /**
* 测试插入数据库
*
* @param args
*/
public static void write(String HL7Msg) {
String dbName = "testDBName";
String collName = "testcollName";
MongoCollection<Document> coll = MongoDBJDBC.instance.getCollection(dbName, collName); // 插入
Document doc = new Document();
doc.put("MsgID", "MSH-10");
doc.put("HL7Body", HL7Msg);
coll.insertOne(doc);
} /**
* 测试入口
*
* @param args
*/
public static void main(String[] args) { String dbName = "testDBName";
String collName = "testcollName";
MongoCollection<Document> coll = MongoDBJDBC.instance.getCollection(dbName, collName); // //插入多条
for (int i = 1; i <= 4; i++) {
Document doc = new Document();
doc.put("name", "yisheng");
doc.put("school", "NEFU" + i);
Document interests = new Document();
interests.put("game", "game" + i);
interests.put("ball", "ball" + i);
doc.put("interests", interests);
coll.insertOne(doc);
} // 根据ID查询
// String id = "58caa7c21320c81bbcfc5593";
// Document doc = MongoDBJDBC.instance.findById(coll, id);
// System.out.println(doc); // //查询多个
// MongoCursor<Document> cursor1 = coll.find(Filters.eq("name",
// "yisheng")).iterator();
// while (cursor1.hasNext()) {
// org.bson.Document _doc = (Document) cursor1.next();
// System.out.println(_doc.toString());
// }
// cursor1.close(); // 查询多个
// MongoCursor<Person> cursor2 = coll.find(Person.class).iterator(); // //删除数据库
// MongoDBUtil.instance.dropDB("testDBName"); // 删除表
// MongoDBUtil2.instance.dropCollection(dbName, collName); // //修改数据
// String id = "58caa6041320c814f4520129";
// Document newdoc = new Document();
// newdoc.put("name", "龚lei");
// MongoDBUtil.instance.updateById(coll, id, newdoc); // 统计表
// System.out.println(MongoDBUtil.instance.getCount(coll)); // //查询所有
// Bson filter = Filters.eq("count", 0);
// MongoDBUtil.instance.find(coll, filter); } }
linux:安装并使用mongo的更多相关文章
- linux 安装 mongo 3.4
要求:linux 安装 mongo 3.4 大体上,按照官网提供的方法来做. 系统是ubuntu 16.04 安装的是mongo3.4.8 社区版 1. 导入导入包管理系统使用的公钥 ...
- linux 安装mongodb
Linux 安装mongodb 1.下载mongodb linux wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon- ...
- MongoDB之二基础入门(window/linux安装启动)
mongodb中有三元素:数据库,集合,文档,其中“集合”就是对应关系数据库中的“表”,“文档”对应“行”. 一window安装与启动 一. 下载 上MongoDB官网 ,下载页面:https://w ...
- Linux安装PHP MongoDB扩展
本文将讲述一下本人安装MongoDB扩展的过程,大家可以略作参考 安装环境 Linux环境:CentOS 6.5 Apache版本:2.4 PHP版本:5.4.3 MongoDB版本:2.6.5 一. ...
- Linux安装mongoDB步骤和方法
Linux安装mongoDB步骤和方法 下载mongoDB数据库 mongodb-linux-x86_64-3.0.15.tgz 存放到linux文件夹中 ftp软件直接拖上去 解压文件夹(解压后,会 ...
- 搜狗输入法linux安装 以及 12个依赖包下载链接分享
搜狗输入法linux安装版,先安装各种依赖包,大概12个依赖,可能中途还需要其他依赖,可以效仿解决依赖问题.如图这12个文件要是手动点击下载,那也太笨点了,我们要用shell命令批量下载.命令如下:w ...
- linux安装php
接上篇:linux安装apache 一.安装php 先安装libxml2库 [root@ctxsdhy package]# yum -y install libxml2-devel 最新地址在:htt ...
- linux安装oracle11g
准备oracle安装文件 Oracle11gR2包含两个文件linux_11gR2_database_1of2.zip和linux_11gR2_database_2of2.zip,将这两个文件通过SS ...
- TODO:Linux安装PHP MongoDB驱动
TODO:Linux安装PHP MongoDB驱动 PHP利于学习,使用广泛,主要适用于Web开发领域. MongoDB的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统 ...
- Symantec Backup Exec 2010 Agent For Linux安装
以前写过一篇文章介绍过Symantec Backup Exec 2012 Agent For Linux安装安装,今天介绍一下Symantec Backup Exec 2010 Agent For L ...
随机推荐
- 6034 Balala Power! (17多校)
题目大意:给出的字符串,每个字符建立一种与0-25的对应关系.然后每个字符串看成是一个26进制的数.问能获得的数的总和的最大值.(最后对1e9+7取模). 题目思考:把每个字符的贡献值看做一个26进制 ...
- css3基础一
1,css简介 CSS 用于控制网页的样式和布局.样式定义如何显示html元素,样式通常保存在外部的 .css 文件中.通过仅仅编辑一个简单的 CSS 文档,外部样式表使你有能力同时改变站点中所有页面 ...
- 20165234 预备作业2 学习基础和C语言基础调查
学习基础和C语言基础调查 一.技能学习经验及体会 你有什么技能比大多人(超过90%以上)更好? 看到这个问题,我仔细想了想,好像的确没有什么特别出众的技能,但是我想到了许多我个人的爱好. 我从小喜欢五 ...
- ubuntu14.04配置face_recognition环境
Github项目地址:https://github.com/MiChongGET/face_collection 环境搭建 1. 环境 ubuntu14.04 LTS python2.7 pip ...
- java ArrayList、Vector、LinkedList区别
- nginx 目录讲解
- 发布逸出 java this 逸出【转】
转自:http://blog.csdn.net/joker_zhou/article/details/7322801 (1)发布:发布是指将一个对象,使其引用储存到一个其他代码可以访问到的地方,在一个 ...
- [转] 理解CheckPoint及其在Tensorflow & Keras & Pytorch中的使用
作者用游戏的暂停与继续聊明白了checkpoint的作用,在三种主流框架中演示实际使用场景,手动点赞. 转自:https://blog.floydhub.com/checkpointing-tutor ...
- 如何能让MAC和PC都能读写移动硬盘
Macbook Pro 移动硬盘 希捷硬盘就不用,有专业适用于苹果的软件. 1.在“LaunchPad”中找到并打开“磁盘工具”,在“磁盘工具”中可以看到移动硬盘的几个分区 2.选择一个分区后,选择“ ...
- Linux 网络侦错:无法联机原因分析
所谓的软件问题,绝大部分就是 IP 参数设定错误啊,路由不对啊,还有 DNS 的 IP 设定错误等等的, 这些问题都是属于软件设定啦!只要将设定改一改,利用一些侦测软件查一查,就知道问题出在哪里了!基 ...