1 MongoDB简介
1.1 什么是MongoDB
1.2 MongoDB特点
1.3 MongoDB体系结构
1.4 数据类型
2 MongoDB安装与启动
2.1 window系统MongoDB安装
MongoDB 下载
MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www.mongodb.com/download-center/community
注意:在 MongoDB 2.2 版本后已经不再支持 Windows XP 系统。最新版本也已经没有了 32 位系统的安装文件。
- MongoDB for Windows 64-bit 适合 64 位的 Windows Server 2008 R2, Windows 7 , 及最新版本的 Window 系统。
- MongoDB for Windows 32-bit 适合 32 位的 Window 系统及最新的 Windows Vista。 32 位系统上 MongoDB 的数据库最大为 2GB。
- MongoDB for Windows 64-bit Legacy 适合 64 位的 Windows Vista, Windows Server 2003, 及 Windows Server 2008 。
根据系统下载 32 位或 64 位的 .msi 文件,下载后双击该文件,按操作提示安装即可。
安装过程中,你可以通过点击 "Custom(自定义)" 按钮来设置你的安装目录。
下一步安装 "install mongoDB compass" 不勾选(当然你也可以选择安装它,可能需要更久的安装时间),MongoDB Compass 是一个图形界面管理工具,可以在后面自己到官网下载安装,下载地址:https://www.mongodb.com/download-center/compass。
创建数据目录
MongoDB将数据目录存储在 db 目录下。但是这个数据目录不会主动创建,我们在安装完成后需要创建它。请注意,数据目录应该放在根目录下((如: C: 或者 D: 等 )。
在本教程中,我们已经在 C 盘安装了 mongodb,现在让我们创建一个 data 的目录然后在 data 目录里创建 db 目录。
c:>cd c: c:>mkdir data c:>cd data c:data>mkdir db c:data>cd db c:datadb>
也可以通过 window 的资源管理器中创建这些目录,而不一定通过命令行。
命令行下运行 MongoDB 服务器
为了从命令提示符下运行 MongoDB 服务器,你必须从 MongoDB 目录的 bin 目录中执行 mongod.exe 文件。
C:mongodbinmongod --dbpath c:datadb
连接MongoDB
我们可以在命令窗口中运行 mongo.exe 命令即可连接上 MongoDB,执行如下命令:
C:mongodbinmongo.exe
配置 MongoDB 服务
管理员模式打开命令行窗口
创建目录,执行下面的语句来创建数据库和日志文件的目录
mkdir c:datadb mkdir c:datalog
创建配置文件
创建一个配置文件。该文件必须设置 systemLog.path 参数,包括一些附加的配置选项更好。
例如,创建一个配置文件位于 C:mongodbmongod.cfg,其中指定 systemLog.path 和 storage.dbPath。具体配置内容如下:
systemLog: destination: file path: c:datalogmongod.log storage: dbPath: c:datadb
安装 MongoDB服务
通过执行mongod.exe,使用--install选项来安装服务,使用--config选项来指定之前创建的配置文件。
C:mongodbinmongod.exe --config "C:mongodbmongod.cfg" --install
要使用备用 dbpath,可以在配置文件(例如:C:mongodbmongod.cfg)或命令行中通过 --dbpath 选项指定。
如果需要,您可以安装 mongod.exe 或 mongos.exe 的多个实例的服务。只需要通过使用 --serviceName 和 --serviceDisplayName 指定不同的实例名。只有当存在足够的系统资源和系统的设计需要这么做。
启动MongoDB服务
net start MongoDB
关闭MongoDB服务
net stop MongoDB
移除 MongoDB 服务
C:mongodbinmongod.exe --remove
命令行下运行 MongoDB 服务器 和 配置 MongoDB 服务 任选一个方式启动就可以。
2.2 Docker 环境下MongoDB安装
docker run ‐di ‐‐name=tensquare_mongo ‐p 27017:27017 mongo
mongo 192.168.1.110
3 常用命令
3.1 选择和创建数据库
use 数据库名称
use spitdb
3.2 插入与查询文档
db.集合名称.insert(数据);
db.spit.insert({content:"hello word",userid:"1011",nickname:"小 雅",visits:NumberInt(902)})
db.集合名称.find()
db.spit.find()
db.spit.insert({_id:"1",content:"我还是没有想明白到底为啥出 错",userid:"1012",nickname:"小明",visits:NumberInt(2020)}); db.spit.insert({_id:"2",content:"加班到半夜",userid:"1013",nickname:"凯撒",visits:NumberInt(1023)}); db.spit.insert({_id:"3",content:"手机流量超了咋办?",userid:"1013",nickname:"凯撒",visits:NumberInt(111)}); db.spit.insert({_id:"4",content:"坚持就是胜利",userid:"1014",nickname:"诺诺",visits:NumberInt(1223)});
db.spit.find({userid:'1013'})
db.spit.findOne({userid:'1013'})
db.spit.find().limit(3)
3.3 修改与删除文档
db.集合名称.update(条件,修改后的数据)
db.spit.update({_id:"1"},{visits:NumberInt(1000)})
db.spit.update({_id:"2"},{$set:{visits:NumberInt(2000)}})
db.集合名称.remove(条件)
db.spit.remove({})
db.spit.remove({visits:1000})
3.4 统计条数
db.spit.count()
db.spit.count({userid:"1013"})
3.5 模糊查询
/模糊查询字符串/
db.spit.find({content:/流量/})
db.spit.find({content:/^加班/})
3.6 大于 小于 不等于
db.集合名称.find({ "field" : { $gt: value }}) // 大于: field > value db.集合名称.find({ "field" : { $lt: value }}) // 小于: field < value db.集合名称.find({ "field" : { $gte: value }}) // 大于等于: field >= value db.集合名称.find({ "field" : { $lte: value }}) // 小于等于: field <= value db.集合名称.find({ "field" : { $ne: value }}) // 不等于: field != value
db.spit.find({visits:{$gt:1000}})
3.7 包含与不包含
db.spit.find({userid:{$in:["1013","1014"]}})
db.spit.find({userid:{$nin:["1013","1014"]}})
3.8 条件连接
$and:[ { },{ },{ } ]
db.spit.find({$and:[ {visits:{$gte:1000}} ,{visits:{$lt:2000} }]})
$or:[ { },{ },{ } ]
db.spit.find({$or:[ {userid:"1013"} ,{visits:{$lt:2000} }]})
3.9 列值增长
db.spit.update({_id:"2"},{$inc:{visits:NumberInt(1)}} )
4 Java操作MongoDB
4.1 mongodb-driver
4.1.1 查询全部记录
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb‐driver</artifactId> <version>3.6.3</version> </dependency> </dependencies>
import org.bson.Document; import com.mongodb.MongoClient; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; public class MongoDemo { public static void main(String[] args) { MongoClient client=new MongoClient("192.168.3.193");//创建连接 MongoDatabase spitdb = client.getDatabase("spitdb");//打开数据库 MongoCollection<Document> spit = spitdb.getCollection("spit");// 获取集合 FindIterable<Document> documents = spit.find();//查询记录获取文档集 合 for(Document document:documents){ System.out.println("内容:"+ document.getString("content")); System.out.println("用户ID:"+document.getString("userid")); System.out.println("浏览量:"+document.getInteger("visits")); } client.close(); } }
4.1.2 条件查询
import org.bson.Document; import com.mongodb.BasicDBObject; import com.mongodb.MongoClient; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; public class MongoDemo1 { public static void main(String[] args) { MongoClient client = new MongoClient("192.168.184.134");// 创建连接 MongoDatabase spitdb = client.getDatabase("spitdb");// 打开数据库 MongoCollection<Document> spit = spitdb.getCollection("spit");// 获取集合 BasicDBObject bson = new BasicDBObject("userid", "1013");// 构建查询 条件 FindIterable<Document> documents = spit.find(bson);// 查询记录获取结 果集合 for (Document document : documents) { // System.out.println("内容:" + document.getString("content")); System.out.println("用户ID:" + document.getString("userid")); System.out.println("浏览量:" + document.getInteger("visits")); } client.close();// 关闭连接 } }
import org.bson.Document; import com.mongodb.BasicDBObject; import com.mongodb.MongoClient; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; public class MongoDemo2 { public static void main(String[] args) { MongoClient client = new MongoClient("192.168.184.134");// 创建连接 MongoDatabase spitdb = client.getDatabase("spitdb");// 打开数据库 MongoCollection<Document> spit = spitdb.getCollection("spit");// 获取集合 BasicDBObject bson = new BasicDBObject("visits", new BasicDBObject("$gt", 1000));// 构建查询条件 FindIterable<Document> documents = spit.find(bson);// 查询记录获取结 果集合 for (Document document : documents) { // System.out.println("内容:" + document.getString("content")); System.out.println("用户ID:" + document.getString("userid")); System.out.println("浏览量:" + document.getInteger("visits")); } client.close();// 关闭连接 } }
4.1.3 插入数据
import java.util.Date; import java.util.HashMap; import java.util.Map; import org.bson.Document; import com.mongodb.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; public class MongoDemo3 { public static void main(String[] args) { MongoClient client = new MongoClient("192.168.184.134");// 创建连接 MongoDatabase spitdb = client.getDatabase("spitdb");// 打开数据库 MongoCollection<Document> spit = spitdb.getCollection("spit");// 获取集合 Map<String, Object> map = new HashMap(); map.put("content", "我要吐槽"); map.put("userid", "9999"); map.put("visits", 123); map.put("publishtime", new Date()); Document document = new Document(map); spit.insertOne(document);// 插入数据 client.close(); } }