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的更多相关文章

  1. linux 安装 mongo 3.4

    要求:linux 安装 mongo 3.4 大体上,按照官网提供的方法来做. 系统是ubuntu 16.04 安装的是mongo3.4.8 社区版 1.         导入导入包管理系统使用的公钥 ...

  2. linux 安装mongodb

    Linux 安装mongodb 1.下载mongodb linux wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon- ...

  3. MongoDB之二基础入门(window/linux安装启动)

    mongodb中有三元素:数据库,集合,文档,其中“集合”就是对应关系数据库中的“表”,“文档”对应“行”. 一window安装与启动 一. 下载 上MongoDB官网 ,下载页面:https://w ...

  4. Linux安装PHP MongoDB扩展

    本文将讲述一下本人安装MongoDB扩展的过程,大家可以略作参考 安装环境 Linux环境:CentOS 6.5 Apache版本:2.4 PHP版本:5.4.3 MongoDB版本:2.6.5 一. ...

  5. Linux安装mongoDB步骤和方法

    Linux安装mongoDB步骤和方法 下载mongoDB数据库 mongodb-linux-x86_64-3.0.15.tgz 存放到linux文件夹中 ftp软件直接拖上去 解压文件夹(解压后,会 ...

  6. 搜狗输入法linux安装 以及 12个依赖包下载链接分享

    搜狗输入法linux安装版,先安装各种依赖包,大概12个依赖,可能中途还需要其他依赖,可以效仿解决依赖问题.如图这12个文件要是手动点击下载,那也太笨点了,我们要用shell命令批量下载.命令如下:w ...

  7. linux安装php

    接上篇:linux安装apache 一.安装php 先安装libxml2库 [root@ctxsdhy package]# yum -y install libxml2-devel 最新地址在:htt ...

  8. linux安装oracle11g

    准备oracle安装文件 Oracle11gR2包含两个文件linux_11gR2_database_1of2.zip和linux_11gR2_database_2of2.zip,将这两个文件通过SS ...

  9. TODO:Linux安装PHP MongoDB驱动

    TODO:Linux安装PHP MongoDB驱动 PHP利于学习,使用广泛,主要适用于Web开发领域. MongoDB的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统 ...

  10. Symantec Backup Exec 2010 Agent For Linux安装

    以前写过一篇文章介绍过Symantec Backup Exec 2012 Agent For Linux安装安装,今天介绍一下Symantec Backup Exec 2010 Agent For L ...

随机推荐

  1. PHP 简单学习(“hello world”,变量,运算符)

    在PHP中: 变量用$来规范 变量名:可以用字母,数字,_来组成,且不能用数字开头(与其他变成命名规范基本一致) <?php $age = 28;    // 变量名 $age = $age + ...

  2. latex中的希腊字母

    原文地址:http://blog.csdn.net/xxzhangx/article/details/52778539 希腊字母,我们从小学开始认识它,但对它的读音我依旧靠蒙(说蒙真的感觉好羞愧啊). ...

  3. tomcat apr 部署

    背景 这还是为了高并发的事,网上说的天花乱坠的,加了apr怎么怎么好,我加了,扯淡.就是吹牛用.我还是认为,性能问题要考设计逻辑和代码解决,这些都是锦上添花的. 步骤 1 windows 部署简单,虽 ...

  4. OpenStack实践系列③镜像服务Glance

    OpenStack实践系列③镜像服务Glance 3.5 Glance部署 修改glance-api和glance-registry的配置文件,同步数据库 [root@node1 ~]# vim /e ...

  5. Golang 优化之路-空结构[转]

    写在前面 开发 hashset 常用的套路: map[int]int8 map[int]bool 我们一般只用 map 的键来保存数据,值是没有用的.所以来缓存集合数据会造成内存浪费. 空对象 空对象 ...

  6. datatables日常使用集合

    datatables CDN链接地址: <link rel="stylesheet" type="text/css" href="https:/ ...

  7. highcharts之柱状图

    <div class="row"> <div class="col-md-12"> <div id="container ...

  8. Android下利用zxing类库实现扫一扫

    程序源代码及可执行文件下载地址:http://files.cnblogs.com/rainboy2010/zxingdemo.zip zxing,一款无比强大的条码解析类库,下面讲解一下如何利用zxi ...

  9. centos7搭建smb服务

    1 yum install samba samba-client samba-common -y  安装smb服务 2 cp -a  /etc/samba/smb.conf /etc/samba/sm ...

  10. vue的基础知识

    Vue.js是什么? Vue(法语)同view(英语) Vue.js是一套构建用户界面(view)的MVVM框架.Vue.js的核心库只关注视图层,并且非常容易学习,非常容易与其他库或已有的项目整合. ...