文章目录
- 一、Mongodb的增删查改指令(在cmd运行)
- 二、Java中进行mongodb的增删查改
一、Mongodb的增删查改指令(在cmd运行)
// 创建测试数据
db.student.insert({name:'张三',age:18,isboy:true,addr:'广州市天河区789'})
db.student.insert({name:'李四',age:22,isboy:true,addr:'广州市天源路456'})
db.student.insert({name:'丽丽',age:19,isboy:false,addr:'深圳市南山区'})
db.student.insert({name:'小明',age:25,isboy:true,addr:'广州市越秀区'})
db.student.insert({name:'Lisa',age:22,isboy:false,addr:'广州市海珠区'})
db.student.insert({name:'李华',age:18,isboy:false,addr:'广州市海珠区'})
// 查询指令
db.student.find().pretty()
// 姓名等于丽丽
db.student.find({name:"丽丽"}).pretty()
// 年龄等于22
db.student.find({age:22}).pretty()
// 性别为女
db.student.find({isboy:false}).pretty()
// 年龄小于20
db.student.find({age:{$lt:20}}).pretty()
// 年龄小于等于22
db.student.find({age:{$lte:22}}).pretty()
// 年龄大于、大于等于
// 年龄22的女孩
db.student.find({age:22, isboy:false}).pretty()
// 年龄小于20的男孩
db.student.find({age:{$lt:20}, isboy:true}).pretty()
// name也是可以比较大小的
db.student.find({name:{$lt:"丽丽"}}).pretty()
// and 可以和 等于 大等于 小等于 任意组合
// 年龄等于18 或者 性别是女
db.student.find({$or:[{age:18},{isboy:false}]}).pretty()
// 年龄小于20或者大于22
db.student.find({$or:[{age:{$lt:20}},{age:{$gt:22}}]}).pretty()
// 年龄大于20或者小于22 (本身逻辑有问题)
db.student.find({$or:[{age:{$gt:20}},{age:{$lt:22}}]}).pretty()
// 年龄大于22并且小于20 (本身逻辑有问题)
// 年龄等于18 或者 性别是女 或者是李四
db.student.find({$or:[{age:18},{isboy:false},{name:'李四'}]}).pretty()
// 年龄小于20或者大于22 并且 男孩
db.student.find({isboy:true,$or:[{age:{$lt:20}},{age:{$gt:22}}]}).pretty()
// 年龄大于20 张三或者李四
db.student.find({age:{$gt:20},$or:[{name:"张三"},{name:"李四"}]}).pretty()
// 年龄小于20或者大于22 并且 张三或李四
db.student.find({$or:[{age:{$lt:20}},{age:{$gt:22}}], $or:[{name:"张三"},{name:"李四"}]}).pretty()
db.student.insert({name:100,age:"18",isboy:false,addr:'广州市海珠区'})
// 查询姓名是字符串的
db.student.find({"name" : {$type : 2}}).pretty()
db.student.find({"name" : {$type : 1}}).pretty()
db.student.find({"age" : {$type : 'string'}}).pretty()
db.student.find({"age" : {$type : 'double'}}).pretty()
db.student.find().limit(3).pretty()
db.student.find().limit(3).skip(4).pretty()
// 根据年龄排序
db.student.find().sort({age:1}).pretty()
db.student.find().sort({age:-1}).limit(3).pretty()
//删除年龄字符串18
db.student.remove({"name":"100"})
db.student.find().sort({isboy:1}).pretty()
// 以年龄创建一个索引
db.student.createIndex({age:1})
// 查看索引
db.student.getIndexes()
// 以 年龄/性别 创建一个索引
db.student.createIndex({age:1, isboy:-1})
//聚操作 分组统计年龄的数量
db.student.aggregate([{$group : {_id:"$age", num_age: {$sum : 1}}}])
//计算平均年龄
db.student.aggregate([{$group:{_id:null,"avg_age":{"$avg":"$age"}} }])
db.student.aggregate([{$project:{_id:null,"avg_age":{"$avg":"$age"}} }])
//筛选数据
db.student.aggregate([{ "$match":{"age":22} } ]).pretty()
db.student.aggregate([{ "$match":{"age":22 ,"isboy":true} } ]).pretty()
//调整字段
db.student.aggregate([{ $project:{"名字":"$name" ,"年龄":"$age"} } ]).pretty()
db.student.aggregate([{ $project:{"_id":0,"名字":"$name" ,"年龄":"$age"} } ]).pretty()
//分组
db.student.aggregate([{$group : {"_id" : "$age"}}])
db.student.aggregate([{$group : {"_id" : "$isboy"}}])
//年龄去重
db.student.distinct("name")
db.student.distinct("age")
db.student.distinct("isboy")
//聚合操作 按性别分组,计算最大,最小,平均,总和 年龄
db.student.aggregate([{ $group:{"_id":"$isboy" ,"max_age":{"$max":"$age"}
,"min_age":{"$min":"$age"}
, "avg_age":{"$avg":"$age"} ,
"sum_age":{"$sum":"$age"} ,
"first_age":{"$first":"$age"} ,
"last_age":{"$last":"$age"}}} ]).pretty()
二、Java中进行mongodb的增删查改
代码如下(示例):
package com.company;
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 org.bson.Document;
import org.bson.conversions.Bson;
public class Main {
public static void main(String[] args) {
//连接到 mongodb 服务
MongoClient mongoClient = new MongoClient();
//连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("test");
//插入数据
insertOneDoc(mongoDatabase);
//查询数据
findstudents(mongoDatabase);
//删除一条数据
removeOneDoc(mongoDatabase);
//更新数据
updateOneDoc(mongoDatabase);
}
//更新数据
private static void updateOneDoc(MongoDatabase mongoDatabase) {
MongoCollection<Document> student = mongoDatabase.getCollection("student");
Bson ageFilter= Filters.eq("name","丽丽");
Document document = new Document().append("age",20);
Document update= new Document().append("$set",document);
student.updateOne(ageFilter,update);
}
//删除数据
private static void removeOneDoc(MongoDatabase mongoDatabase) {
MongoCollection<Document> student = mongoDatabase.getCollection("student");
Bson bson = Filters.eq("name","小明");
student.deleteOne(bson);
}
//插入数据
private static void insertOneDoc(MongoDatabase mongoDatabase){
MongoCollection<Document> student = mongoDatabase.getCollection("student");
//
Document document = new Document().append("name","周杰伦").append("age",38).append("isboy",true)
.append("arrr","中国台湾");
student.insertOne(document);
}
//查询数据
private static void findstudents(MongoDatabase mongoDatabase){
//获取集合
MongoCollection<Document> student = mongoDatabase.getCollection("student");
/*
//增加查询条件
Bson ageFilters = Filters.lte("age",22);
Bson boyFilters = Filters.eq("isboy",false);
Bson andFilters = Filters.and("age",22);
*/
//调用集合的find方法
FindIterable<Document> documents = student.find();
//遍历documents
MongoCursor<Document> iterator = documents.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}