选择好安装路径之后一路next,等待安装完成,打开安装目录下的bin文件夹,运行mongo.exe可以运行进入monge的shell命令行界面,如下
1 创建数据表库
Use 数据库名称
2 检查当前使用的数据库
db
3 show dbs 展示数据库列表
注意,空的数据库不会显示出来,必须至少插入一个文档。
4 删除数据库
先显示可用数据库 show dbs
Use + 数据库名 使用数据库
Db.dropDatabase() 删除数据库
5 创建集合 db.createCollection(name,option)
Name 是String类型 这个集合的名称
Option Document类型 Document中可以指定的字段有
capped (Boolean) 是否封闭的集合,如果为true 还需要指定 size 当达到size大小,型数据将会替换最旧的数据
autoIndexId Boolean 类型,如果为true 将在_id上自动创建索引
size 数字 指定集合的大小上限。
Max 数字 指定集合中最大的文档数
注意 插入文档时,会先指定上限集合的capped字段的大小,然后检查max字段
Eg :
db.createCollection(“collection1”)
db.createCollection(“mycollection3”,{capped:true,autoIndexId:true,size:6142800,max:200})
6 查看集合 show collections
7 删除集合 db.集合名称.drop()
8 集合中插入document
db.集合名.insert(
{ _id: 1,
Name:”xxx”,…….
})
注意 如果插入的Doceument中指定了 id字段 将会按照该字段作为id,,如果没有该字段,那么mongodb将自动生成一个Objectid 作为_id .mongo中的 开头的都有特殊含义。
{ item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
{ item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
{ item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
{ item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
{ item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
查询的条件涉及到里面的document时可以这么写,
查找集合里面的size的h小于15,size的uom=in state=D 。 若是在关系型数据库里面就要用到多表查询,monge 在这种关联关系复杂的数据处理上是十分简单的。
Db.集合名称.find( { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" } )
db.mycollection.update({name:”xixixi”},{$set:{name:”xixixiupdate”}})
db.mycollection.update({name:”xixixi”},{$set:{name:”xixixiupdate”}},{mult:true})
15 remove 删除
db.集合名称.remove({条件},删除多少条),
如果remove() 不写参数相当于mysql的truncate
16 skip 跳过 limit 限制
limit用来限制查询的条数,skip用来设置跳过的条数。
17 sort排序
db.mycollection.find().sort({字段名:?})
? 设置为1 升序 设置为-1是降序。
18 索引
db.集合名.ensuleIndex({字段名:1,字段名:-1})
索引 设置为1 则默认升序,设置为-1 默认降序
org.springframework.boot
spring-boot-starter-data-mongodb
2.1.4.RELEASE
spring:
data:
mongodb:
uri: mongodb://localhost:27017
database: db1
注意
@Document注解指明的是,对应数据库中的collection名称。
如果不写该注解 默认当前类名首字母小写的相同名字的collection,还是加上好一些一目了然。
如果想用实体类中的字段做主键,在字段名称上添加@Id注解即可。
如果实体类中的字段名字为id,无论加不加@Id注解,都会默认id为主键
@Document(collection = "collection1")
public class MongoDbTest{
// @Id
private String testId;
private String name;
private String info;
public String getTestId() {
return testId;
}
public void setTestId(String testId) {
this.testId = testId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
@Component
public class MongoDbTestDAO {
@Autowired
MongoTemplate mongoTemplate;
public MongoDbTest findByName(String name) {
Query query = new Query(Criteria.where("name").is(name));
return mongoTemplate.findOne(query, MongoDbTest.class);
}
public void insert(MongoDbTest test) {
mongoTemplate.save(test);
}
// update 需要三个东西 query update class
public void updateByname(MongoDbTest test) {
Query query = new Query(Criteria.where("name").is(test.getName()));
Update update = new Update().set("info", test.getInfo());
mongoTemplate.updateFirst(query, update, MongoDbTest.class);
}
public void delete(String name) {
Query query = new Query(Criteria.where("name").is(name));
mongoTemplate.remove(query);
}
}
然后Service层就调用这几个就可以了,,当然在controller也可以调用。。controller 和Service和 普通的Mysql的调用方式没有区别就不赘述了。
mongodb的数据库里面存储的都是文本类型的数据是BSON格式(二进制存储),和JSON格式数据相似,如下图
- 增删改查,在MongoTemplate中都有相应的模板,根据模板来使用即可。