一、MongoDB的概念
1.定义:开源的文档数据库,具有高性能,高可用,自动拓展,MongoDB是用C++编写的非关系型数据库,可以存储更复杂的数据结构,具有很强的数据描述能力。
2.主要特性:面向集合存储,易于存储对象类型的数据,支持动态查询,支持完全索引,使用高效的二进制数据存储,文件存储格式为BSON等。
二、MongoDB基本操作
1.查看所有数据库:show databases;
2.创建库:use 库名;
3.查看当前库: db;
4.删除库:db.dropDataBase(); (不建议)
5.创建集合:db.createCollection("集合名称");
6.查看当前库中所有的集合:show collections; 或 show tables;
7.删除集合:db.集合名称.drop();
8.增加一条数据:db.集合名称.insert({name:“张三”});
增加多条数据:db.集合名称.insert({name:“张三”,sex:"男"});
9.修改数据:db.集合名称.update({查询条件},{$set:{更新内容}},
{
upset:<boolean>,
multi:<boolean>,
});
注意:{multi:true}表示修改所有符合的,{multi:false}表示修改第一条符合的
upset:默认为false,如果查询不到数据,就把更新的数据插入
db.集合名称.update({查询条件},{$inc:{字段名:number(1)}})
$inc:增加1,只针对整型,浮点型,字符串不能使用!!!
10.删除数据:
db.集合名称.remove(
<query>,
{
justOne:<boolean>
}
)
删除一条数据:db.集合名称.remove({name:“张三”},{justOne:true});
删除多条数据:db.集合名称.remove({name:"张三"});
11.查询操作:
全查:db.集合名称.find();
12.MongoDB的or条件
db.集合名称.find(
{
$or:[{key1:value1},{key2:value2}]
}
)
13.MongoDB的and条件: db.集合名称.find({key1:value1},{key2:value2});
14.模糊查询:
包含张的内容:db.集合名称.find({name:/张/})
以张开头的内容:db.集合名称.find({name:/^张/})
以张结尾的内容:db.集合名称.find({name:/张$/})
15.limit和skip操作
db.集合名称.find().limit(number).skip(number);
三、MongoDB总结
四、Java链接MongDB
1.首先要导入MongoDB驱动包
mongo-java-driver-3.4.2.jar
2.其次获取链接对象
MongoClient mc = new MongoClient("localhost", 27017);
3.获取库对象
MongoDatabase db = mc.getDatabase("库名");
4.获取集合对象
MongoCollection<Document> collection = db.getCollection("集合名称r");
5.增删改查操作
6.关闭链接
mc.close();
五、Java操作mongodb增删改查
1.增加操作
public class AddDemo {
public static void main(String[] args) {
// 连接对象
MongoClient mc = new MongoClient("localhost", 27017);
// 库对象
MongoDatabase db = mc.getDatabase("xuexiao");
// 集合对象
MongoCollection<Document> collection = db.getCollection("Teacher");
// 新增
Document document1 = new Document();
document1.put("name", "张三");
document1.put("age", 18);
document1.put("birthday", new Date());
document1.put("sex", "男");
Document document2 = new Document();
document2.put("name", "张三");
document2.put("age", 18);
document2.put("birthday", new Date());
document2.put("sex", "男");
Document document3 = new Document();
document3.put("name", "张三");
document3.put("age", 18);
document3.put("birthday", new Date());
document3.put("sex", "男");
Document document4 = new Document();
document4.put("name", "张三");
document4.put("age", 18);
document4.put("birthday", new Date());
document4.put("sex", "男");
List<Document> listdoc = new ArrayList<Document>();
listdoc.add(document1);
listdoc.add(document2);
listdoc.add(document3);
listdoc.add(document4);
// 添加一条数据
// collection.insertOne(document);
// 一次添加多条数据
collection.insertMany(listdoc);
mc.close();
}
}
运行结果如下:
2.删除操作
public class DeleteDemo {
public static void main(String[] args) {
// 连接对象
MongoClient mc = new MongoClient("localhost", 27017);
// 库对象
MongoDatabase db = mc.getDatabase("MongoDay1");
// 集合对象
MongoCollection<Document> collection = db.getCollection("student");
// Bson gt = Filters.gt("age", 100);
// Bson exists = Filters.exists("age");
Bson exists = Filters.exists("age", false);
// DeleteResult deleteOne = collection.deleteOne(new Document("name","张三"));
// DeleteResult deleteMany = collection.deleteMany(new Document("name","张三"));
DeleteResult deleteMany = collection.deleteMany(exists);
System.out.println(deleteMany);
mc.close();
}
}
运行结果:
运行前:
运行后:
3.修改操作
public class UpdateDemo {
public static void main(String[] args) {
// 连接对象
MongoClient mc = new MongoClient("localhost", 27017);
// 库对象
MongoDatabase db = mc.getDatabase("MongoDay1");
// 集合对象
MongoCollection<Document> collection = db.getCollection("student");
// Bson eq = Filters.eq("name", "哈哈哈");
// 多条件的
Bson and = Filters.and(Filters.gte("age", 20),Filters.lte("age", 30));
// UpdateResult updateOne = collection.updateOne(
// eq, new Document("$set",new Document("age", 20)));
UpdateResult updateMany = collection.updateMany(
and, new Document("$inc",new Document("age",100)));
// UpdateResult updateOne = collection.updateOne(
// eq, new Document("$set",new Document("age", 20)),
// new UpdateOptions().upsert(true));
System.out.println(updateMany);
mc.close();
}
}
运行结果:
4.查询操作
public class SelectDemo {
public static void main(String[] args) {
Gson gson = new GsonBuilder().create();
// 连接对象
MongoClient mc = new MongoClient("localhost", 27017);
// 库对象 -- 获取 创建
MongoDatabase db = mc.getDatabase("xuexiao");
// 集合对象 -- 获取 创建
MongoCollection<Document> collection = db.getCollection("Teacher");
// 添加条件
Bson eq = Filters.regex("name", "张");
Document document = new Document("birthday",-1);
// .limit(2).skip(2)
FindIterable<Document> find = collection.find(eq).sort(document);
// for(Document doc : find) {
// System.out.println(doc);
// }
List<Student> slist = new ArrayList<Student>();
MongoCursor<Document> iterator = find.iterator();
while(iterator.hasNext()) {
Student s = new Student();
Document next = iterator.next();
s.setSname(next.getString("name"));
s.setSsex(next.getString("sex"));
s.setSid(next.getInteger("sid"));
// 参数1 Json 字符串
// 参数2 需要的对象的类型
// String json = next.toJson();
// System.out.println(json);
// Student s = gson.fromJson(json, Student.class);
slist.add(s);
}
for(Student ss : slist){
System.out.println(ss);
}
mc.close();
}
}
运行结果: