简介
MongoDB是一个基于分布式文件存储 [1] 的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
基本命令
show dbs/show databases // 显示所有的数据库
use <数据库名> //进入指定数据库
db //查询当前所在数据库
show collections //查询所有的集合
ObjectId() //获取随机的id,具有唯一性
查询
db.<collection>.find(); //查询集合 返回数组
db.<collection>.find()[1]; //查询第二个doc
db.<collection>.find({name:"xiaoming"}) // 查询name为xiaoming的doc
db.<collection>.findOne() //查询符合条件的第一个doc
db.<collection>.find().count() //统计数量
db.<collection>.find().count //查询count的funcation
db.<collection>.find().length() // 返回长度
增加
db.<collection>.insertOne() // 插入一条doc
db.<collection>.insertMany() //插入多条doc
db.<collection>.insert({username:"11"}) // 插入一条或多条数据
修改
db.<collection>.update(
{username:"11"},
{$set:{address:"cd",username:"xiaohong"}}
) //修改更新 需要使用$set操作符 更新指定字段db.<collection>.update(
{username:"xiaohong"},
{$unset:{username:"1"}}
) //删除某一字段需要使用$unset//注意:update默认只会修改一个 需要加一个 {multi:true} 就会修改多个
db.<collection>.updateMany() //修改多个
db.<collection>.updateOne() //修改一个
删除
db.<collection>.remove(<doc>) // 删除doc 如果匹配到多个时默认全部删除 ,只删除一个,需要第二个参数写true
db.<collection>.deleteOne()
db.<collection>.deleteMany()
db.<collection>.remove({}) //清空集合
db.<collection>.drop() //删除集合
可视化工具的使用:
官网点击:robo3t
springBoot 整合mongoDB
项目结构
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
application.yml
server: port: 80 servlet: context-path: / spring: data: mongodb: username: root password: '123456' database: demo host: 127.0.0.1 port: 27017
MongoApplication:
package com.yellow;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import com.yellow.bean.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.regex.Pattern;
@SpringBootApplication
@RestController
public class MongoApplication {
@Autowired
private MongoTemplate mongoTemplate;
/**
* 查询 User
*
* @return
*/
@GetMapping
public List<User> findAll() {
return mongoTemplate.findAll(User.class);
}
/**
* 添加User
*
* @param user
* @return
*/
@PostMapping
public String addUser(@RequestBody User user) {
try {
mongoTemplate.save(user);
} catch (Exception e) {
e.printStackTrace();
return "failed";
}
return "success";
}
/**
* 名称精确查询
*
* @param username
* @return
*/
@GetMapping("/username/{username}")
public List<User> findByUsername(@PathVariable("username") String username) {
Query query = new Query(Criteria.where("username").is(username));
List<User> users = mongoTemplate.find(query, User.class);
return users;
}
/**
* 更新User
*
* @param user
* @return
*/
@PutMapping
public long updateUser(@RequestBody User user) {
Query query = new Query(Criteria.where("uid").is(user.getUid()));
Update update = new Update();
update.set("username", user.getUsername());
update.set("address", user.getAddress());
//更新查询到的所有
UpdateResult updateResult = mongoTemplate.updateMulti(query, update, User.class);
//获取匹配数
long matchedCount = updateResult.getMatchedCount();
return matchedCount;
}
/**
* 根据 uid 删除User
*
* @param uid
* @return
*/
@DeleteMapping("/delete/{uid}")
public long deleteById(@PathVariable("uid") String uid) {
DeleteResult result = mongoTemplate.remove(Query.query(Criteria.where("uid").is(uid)), User.class);
return result.getDeletedCount();
}
/**
* uid 查询 User
*
* @param uid
* @return
*/
@GetMapping("/uid/{uid}")
public User findById(@PathVariable("uid") String uid) {
User user = mongoTemplate.findById(uid, User.class);
return user;
}
/**
* 名称模糊查询
*
* @param username
* @return
*/
@GetMapping("/like/{username}")
public List<User> findNameLike(@PathVariable("username") String username) {
Pattern pattern = Pattern.compile("^.*" + username + ".*$");
Query query = new Query();
query.addCriteria(Criteria.where("username").regex(pattern));
List<User> users = mongoTemplate.find(query, User.class);
return users;
}
public static void main(String[] args) {
SpringApplication.run(MongoApplication.class, args);
}
}
Bean:
package com.yellow.bean;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "user") //指定集合
public class User {
@Id //指定唯一标识
private String uid;
private String username;
private String address;
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}