副本集
参考网址:
将4.2文件夹复制三份
创建3个db文件夹 3个log文件夹
启动Master
1.启动路径:C:\Program Files\MongoDB\Server\master\bin
1.启动命令:
mongod -port 27111 -dbpath C:\data\masterdb -logpath C:\data\masterlog\mongodb.log -replSet mySet -logappend
启动Slave
1.切换 C:\Program Files\MongoDB\Server\slave\bin
2.执行 mongod -port 27112 -dbpath C:\data\slavedb -logpath C:\data\slavelog\mongodb.log -replSet mySet -logappend
启动Arbiter
C:\Program Files\MongoDB\Server\arbiter\bin
mongod -port 27113 -dbpath C:\data\arbiterdb -logpath C:\data\arbiterlog\mongodb.log -replSet mySet -logappend
1.登录master
mongo -port 27111
2.在初始化之前先查看一下rs状态
rs.status()
ok 0 没有找到副本集的配置信息
3.执行初始化 再次查看状态
rs.initiate()
rs.status()
4.为副本集添加副本
rs.add(“localhost:27112”)
添加成功啦 ok=1
再次查看rs.status()
发现副本集中有两个节点啦。而且27111是主节点,27112是从节点
Java 操作
- 下载jar包到本地 超星 资料
- 打开eclipse 里面默认有一个demo项目 运行会输出Hello word
- 在Demo里新建一个libs 目录
4.把jar复制进去 jar上面点击右键 build path Add
- 写代码
import org.bson.Document;
import org.bson.conversions.Bson;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
public class Main {
private static MongoClient mongoClient;
private static MongoDatabase mongoDatabase;
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("hello world");
// 初始化客户端
mongoClient = new MongoClient();
// 连接到数据库
mongoDatabase = mongoClient.getDatabase("test");
// 插入一条数据
// insertOneDoc();
// 删除一条数据
// deleteOneDoc();
// 修改一条数据
updateOneDoc();
// 查询数据
findDocs();
}
private static void updateOneDoc() {
// 获取集合
MongoCollection<Document> col = mongoDatabase.getCollection("user");
// 条件
Bson filter = Filters.eq("name", "lisa");
// 更新的内容
Document docUpdate = new Document("$set", new Document("name", "贾玲"));
// 更新
UpdateResult result = col.updateOne(filter, docUpdate);
long count = result.getModifiedCount();
System.out.println("更新了" + count +"条");
}
private static void deleteOneDoc() {
// 获取集合
MongoCollection<Document> col = mongoDatabase.getCollection("user");
Bson filter = Filters.eq("age",20);
DeleteResult result = col.deleteOne(filter);
long count = result.getDeletedCount();
System.out.println("删除了" + count + "条");
}
/**
* 查询数据
*/
private static void findDocs() {
// 获取集合
MongoCollection<Document> col = mongoDatabase.getCollection("user");
// 增加查询条件
// Bson filter = Filters.lt("age", 20);
FindIterable<Document> docs = col.find();
MongoCursor<Document> cursor = docs.iterator();
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
}
/**
* 插入一条数据
*/
private static void insertOneDoc() {
// 获取集合
MongoCollection<Document> col = mongoDatabase.getCollection("user");
// 集合操作 增加
// 创建一条文档
Document doc = new Document().append("name", "张三").append("age", 20).append("sex", true);
col.insertOne(doc);
}
}
数据初始化
// 插入数据
db.col1.insert({name:"lisi", age:20, score:100})
db.col1.insert({name:"xiaoming", age:22, score:80})
db.col1.insert({name:"zhangsan", age:23, score:60})
db.col1.insert({name:"wangwu", age:24, score:40})
db.col1.insert({name:"zhaoliu", age:25, score:75})
db.col1.insert({name:"songjiang", age:28, score:90})
年龄大于22 (分数大于80 或者 分数小于60)
db.col1.find({age:{$gt:22}, $or:[{score:{$gt:80}},{score:{$lt:60}}]})
将bin路径加入到系统的环境变量
计算机 属性 环境变量 Path 末尾加英文分号 再加入
C:\Program Files\Git\cmd;C:\Program Files\MongoDB\Server\4.2\bin
服务端运行 mongod
客户端运行mongo
内嵌文档
查看数据库
如果要删除test 先切换到test 再执行dropDatabase()
创建和删除集合
显式创建
隐式创建
save和insert
insertMany()
db.col1.insert({name:“zhangsan”, age:20})
db.col1.insert({name:“lisi”, age:18})
db.col1.insert({name:“lisi”, age:20})
db.col1.insert({name:“lisi”, age:22})
db.col1.insert({name:“zhaoliu”, age:19})
db.col1.insert({name:“wangwu”, age:21})
db.col1.update({name:“zhangsan”},{$set:{name:“MongoDB”}})
db.col1.update({name:“lisi”},{$set:{name:“MongoDB”}})
db.col1.update({name:“MongoDB”},{$set:{name:“cainiao”}})
db.col1.update({name:“cainiao”},{$set:{name:“zhangsan”}},{multi:true})
把wangwu年龄更新为18岁
db.col1.update({name:“wangwu”},{$set:{age:18}})
再把两个18岁 一次更新为28岁
db.col1.update({age:22},{$set:{age:28}},{upsert:true, multi:true})
Mysql删除
delete from student where age > 18;
MongoDB删除
db.col1.remove({age:19})
db.col1.remove({name:“wangwu”})
db.col1.remove({name:“zhangsan”})
全部删除
db.col1.remove({})
练习:
-
age 18 改为20
db.col1.update({age:18},{$set:{age:20}}) -
删除20 只删除一条
db.col1.remove({age:20},{justOne:true})
查询
find()
db.col1.find({age:20})
结果美化
pretty
db.col1.find().pretty()
等于
db.col1.find({age:20})
db.col1.find({name:“zhangsan”})
小于
db.col1.find({age:{$lt:20}})
小于等于
db.col1.find({age:{$lte:20}})
大于
db.col1.find({age:{$gt:20}})
大于等于
db.col1.find({age:{$gte:20}})
不等于20
db.col1.find({age:{$ne:20}})
练习:
1.查询姓名不是zhangsan
db.col1.find({name:{$ne:“lisi”}})
将光标移到末尾 End 上下左右箭头上面位置
按住shift 按Home
2.查询姓名大于lisi
db.col1.find({name:{$gt:“wangwu”}})
AND条件
db.col1.find({age:{KaTeX parse error: Expected 'EOF', got '}' at position 6: gt:18}̲, age:{lt:21}})
db.col1.find({age:{KaTeX parse error: Expected 'EOF', got '}' at position 6: gt:19}̲, name:{gt:“lisi”}})
练习
查询年龄等于20 并且姓名等于XXX
查询年龄小于20 并且姓名小于xxx
OR条件
db.col1.find({KaTeX parse error: Expected 'EOF', got '}' at position 23: …e:18},{age:19}]}̲) db.col1.find(…or:[{age:{KaTeX parse error: Expected 'EOF', got '}' at position 6: lt:19}̲},{age:{gt:21}}]})
db.col1.find({KaTeX parse error: Expected '}', got 'EOF' at end of input: …angsan"},{age:{gt:21}}]})
数据初始化
// 插入数据
db.col1.insert({name:"lisi", age:20, score:100})
db.col1.insert({name:"xiaoming", age:22, score:80})
db.col1.insert({name:"zhangsan", age:23, score:60})
db.col1.insert({name:"wangwu", age:24, score:40})
db.col1.insert({name:"zhaoliu", age:25, score:75})
db.col1.insert({name:"songjiang", age:28, score:90})