一、搬砖
电脑里的老笔记,早忘了是从哪搬来的了,整理成笔记。如有雷同,纯属巧合。
1.1 下载安装
官方网站:http://www.mongodb.org/
安装步骤:
步骤1:
压缩版本:mongodb-win32-x86_64-2008plus-ssl-3.0.2.zip(不建议使用,容易报错:计算机中丢失libeay32.dll)
安装版本:mongodb-win32-x86_64-2008plus-ssl-3.0.2-signed.msi(安装版自带有libeay32.dll文件)
步骤2:
将MongoDB的bin目录配置PATH环境变量中,方便快速使用其命令。
1.2 基本操作
1.2.1 ddm
1.启动MongoDB服务(端口默认为27017)
- 配置MongoDB数据存放位置 mongod --dbpath H:\MongoDB\data
- 重定向日志输出到日志文件(日志默认输出到控制台中)。 mongod --dbpath H:\MongoDB\data
–logpath H:\MongoDB\logs.txt
2. 连接MongoDB
- 最简单的连接(默认连接到本机的test数据库).
mongo 127.0.0.1:27017/test
简写: mongo - 连接到指定IP指定数据库中.
mongo IP:端口/test
3.基本操作命令
- 查询所有的数据库
show dbs - 使用指定的数据库
use databaseName - 查询当前数据库中所有的集合(表)
show collections
4. MongoDB客户端工具-MongoVUE
- 显示创建collection:
db.createCollection(‘collectionName’) - 隐式创建collection(插入数据前创建):
db.collectionName.insert(document); - 删除collection:
db.collectionName.drop() , - 删除database:
db.dropDatabase(); - 统计Collection中文档数量:
db.collectionName.count();
1.2.2 ddl
插入数据操作:
语法: db.collectionName.insert(document);
注意: mongodb存储的是文档, 文档是json格式的对象。
比如操作user集合(表).
1: 增加单个文档。
db.user.insert({name:“will”,age:17});
2: 增加单个文档,并指定_id。
db.user.insert({_id:22,name:“will”,age:17,gender:“boy”,email:“will@itsource.cn”});
3: 增加多个文档。
db.user.insert([
{name:“张三”,age:17},
{name:“李四”,age:18},
{name:“王五”,age:19}
]);
删除操作:
语法: db.collectionName.remove(查询表达式, 是否删除多条选项);
选项是指 {justOne:true/false},是否只删一行, 默认为false.
比如操作user集合(表).
注意:
1: 查询表达式依然是个json对象
2: 查询表达式匹配的行,将被删掉.
3: 如果不写查询表达式,collections中的所有文档将被删掉.
1:删除user集合中_id属性值为9527的文档 。
db.user.remove({_id:9527});
2:删除user集合中gender属性为boy的文档(默认删除多条数据)。
db.user.remove({gender:“boy”});
3:删除user集合中gender属性为girl的文档,只删除1行。
db.user.remove({gender:“boy”},true);
更新操作:
语法: db.collectionName.update(查询条件,更新的数据,是否修改多条);
比如操作user集合(表).
1:修改user集合中name为张三改成小王。
db.user.update({name:“张三”},{name:“西门吹雪”});
此时出现:其他的属性全部消失.
db.user.update({name:“李四”},{KaTeX parse error: Expected 'EOF', got '}' at position 18: …t:{name:"西门吹雪"}}̲); 2:修改user集合中所…set:{age:99}},{multi:true});
查询操作:
语法: db.collectionName.find(查询表达式,查询的列);
比如操作user集合(表).
1:查询所有user集合中文档的数据。
db.user.find();
2:查询user集合中所有的gender属性 (_id属性默认总是查出来)。
db.user.find({},{gender:true});
3:查询user集合中所有的gender属性,且不查询_id属性。
db.user.find({},{_id:false,gender:true});
4:查询user集合中所有gender属性值为boy的文档中的name属性。
db.user.find({gender:“boy”},{_id:false,name:true});
5:查询user集合中所有gender属性值为boy并且年龄大于等于17的文档中的name属性。
db.user.find({gender:“boy”,age:{$gte:17}},{_id:false,name:true,age:true});
1.3 概述
MongoDB是一个高性能,开源,无模式的文档型数据库,它在许多场景下可用于替代传统的关系型数据库或键/值存储方式,是当前NoSQL数据库中比较热门的一种。
MongoDB使用C++开发。不支持SQL,但有自己功能强大的查询语法。MongoDB使用BSON作为数据存储和传输的格式。
BSON是一种类似JSON的二进制序列化文档,支持嵌套对象和数组。MongoDB很像MySQL,collection对应MySQL的table,document对应MySQL的row。
官方网站:http://www.mongodb.org/
官方给自己的定义是Key-value存储(高性能和高扩展)和传统RDBMS(丰富的查询和功能)之间的一座桥梁。
MongoDB存取原理:
内部执行引擎为JS解释器(解释符合JS语法的语句):
插入操作:把JSON对象数据存储成BSON结构的文档结构,
查询操作:把BSON结构数据转换为JSON对象.
二、java 代码
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.6.1</version>
</dependency>
public class App {
public void testInsert() {
MongoClient client = new MongoClient("localhost", 27017);
MongoDatabase db = client.getDatabase("user");
MongoCollection<Document> collection = db.getCollection("user");
Map<String, Object> map = new HashMap<>();
map.put("name", "西门吹雪");
map.put("age", 32);
map.put("gender", "男");
Map<String, Object> hobbyMap = new HashMap<>();
hobbyMap.put("lang", "Java");
hobbyMap.put("girl", "美女");
map.put("hobby", hobbyMap);
// 插入操作
org.bson.Document doc = new org.bson.Document(map);
collection.insertOne(doc);
// 释放资源
client.close();
}
public void testFindAll() {
MongoClient client = new MongoClient("localhost", 27017);
MongoDatabase db = client.getDatabase("user");
MongoCollection<Document> collection = db.getCollection("user");
FindIterable<Document> it=collection.find();
MongoCursor<Document> cursor=it.iterator();
while(cursor.hasNext()) {
Document doc=cursor.next();
String name=doc.getString("name");
Double age=doc.getDouble("age");
System.out.println(name+" , "+age);
}
client.close();
}
@Test
public void testFindOne() {
MongoClient client = new MongoClient("localhost", 27017);
MongoDatabase db = client.getDatabase("user");
MongoCollection<Document> collection = db.getCollection("user");
Bson filter =new BasicDBObject("_id",new ObjectId("5a732487e35a31317290ba8d")) ;
FindIterable<Document> it=collection.find(filter);
MongoCursor<Document> cursor=it.iterator();
while(cursor.hasNext()) {
Document doc=cursor.next();
String name=doc.getString("name");
System.out.println(name);
// int age=doc.getInteger("age");
// System.out.println(name+" , "+age);
}
client.close();
}
public void testUpdate() {
MongoClient client = new MongoClient("localhost", 27017);
MongoDatabase db = client.getDatabase("user");
MongoCollection<Document> collection = db.getCollection("user");
Bson filter =new BasicDBObject("_id",new ObjectId("5a732487e35a31317290ba8d")) ;
Map<String,Object> map=new HashMap<>();
map.put("name", "小李");
map.put("age", "17");
Bson update=new BasicDBObject(map);
collection.updateOne(filter, new BasicDBObject("$set", update));
client.close();
}
public void testRemov() {
MongoClient client = new MongoClient("localhost", 27017);
MongoDatabase db = client.getDatabase("user");
MongoCollection<Document> collection = db.getCollection("user");
collection.deleteOne(new BasicDBObject("_id",new ObjectId("5a732487e35a31317290ba8d")));
client.close();
}
}