下载地址:https://www.mongodb.com/download-center/community
zip直接解压即可
安装目录下mongodb\bin\mongod.exe启动
启动时如果有以下错误
错误:MongoDB shell version v4.0.9
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
2019-07-04T18:00:33.323+0800 E QUERY [js] Error: couldn’t connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: ����Ŀ�����������ܾ������� �ӡ� :
connect@src/mongo/shell/mongo.js:343:13
@(connect):2:6
exception: connect failed
解决:管理员打开cmd cd到bin下 mongod.exe --dbpath D:\Java\mongodb\data
1、Window mongodb设置密码
1、 Mongodb安装目录的bin目录下
mongo.exe
2、 进入admin数据库
Use admin
3、 首先看看mongodb内置角色:
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
7. 内部角色:__system
4、 db.createUser({user:“admin”,pwd:“admin”,roles:[{role:“userAdminAnyDatabase”,db:“admin”}]})
5、 重启mongodb服务,
重新打开cmd,在mongodb路径的bin目录下,执行mongod --dbpath D:\Java\mongodb\data --auth
q启动时一定要加–auth才会应用密码
6、 db.auth(“”,””)查看是否设置成功
2、springboot 集成mongodb
1、pom
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2、application.yml
不设密码
spring:
data:
mongodb:
uri: mongodb://localhost:27017/test
设置密码
spring:
data:
mongodb:
uri: mongodb:// admin:admin@localhost:27017/test
多节点集群
spring:
data:
mongodb:
uri: mongodb:// admin:admin@localhost:27017,xxxxx:27017/test
3、mongoTemplate操作demo
package com.example.mongodb.Dao;
import java.util.List;
public class User {
public String _id;//可映射自动生成的id
public String name;
public String addressName;
public String msg;
public List<UserDetail> userDetail;
public String get_id() {
return _id;
}
public void set_id(String _id) {
this._id = _id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddressName() {
return addressName;
}
public void setAddressName(String addressName) {
this.addressName = addressName;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public List<UserDetail> getUserDetail() {
return userDetail;
}
public void setUserDetail(List<UserDetail> userDetail) {
this.userDetail = userDetail;
}
@Override
public String toString() {
return "User{" +
"_id='" + _id + '\'' +
", name='" + name + '\'' +
", addressName='" + addressName + '\'' +
", msg='" + msg + '\'' +
", userDetail=" + userDetail +
'}';
}
}
package com.example.mongodb.Dao;
public class UserDetail {
public String named;
public String msgd;
public String addressNamed;
public String getNamed() {
return named;
}
public void setNamed(String named) {
this.named = named;
}
public String getMsgd() {
return msgd;
}
public void setMsgd(String msgd) {
this.msgd = msgd;
}
public String getAddressNamed() {
return addressNamed;
}
public void setAddressNamed(String addressNamed) {
this.addressNamed = addressNamed;
}
@Override
public String toString() {
return "UserDetail{" +
"named='" + named + '\'' +
", msgd='" + msgd + '\'' +
", addressNamed='" + addressNamed + '\'' +
'}';
}
}
package com.example.mongodb;
import com.example.mongodb.Dao.User;
import com.example.mongodb.Dao.UserDetail;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.mongodb.DBObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import org.springframework.data.mongodb.core.aggregation.LookupOperation;
import org.springframework.data.mongodb.core.aggregation.TypedAggregation;
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.data.repository.support.PageableExecutionUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.*;
@Controller
@RequestMapping("/test")
public class TetController{
@Autowired
private MongoTemplate mongoTemplate;
// updateMulti 如果根据查询条件找到对应的多条记录是,全部更新
// updateFirst 更改符合条件的第一个
// upsert update+insert 如果根据条件没有对应的数据,则执行插入
// findAndModify 查询然后更新
@GetMapping("/saveUser")
public String saveUser() throws Exception{
List<User> list = new ArrayList<>();
for (int i=0;i<10;i++){
User user = new User();
user.setName("test"+i);
user.setAddressName("sdfasd");
user.setMsg("msg");
list.add(user);
}
mongoTemplate.insertAll(list);
Query query = Query.query(Criteria.where("name").is("test1"));
List<User> lo = mongoTemplate.find(query,User.class);
for (User l:lo){
System.out.println(l.toString());
}
return "";
}
@GetMapping("/saveUserDetail")
public String saveUserDetail() throws Exception{
List<UserDetail> list = new ArrayList<>();
for (int i=0;i<10;i++){
UserDetail user = new UserDetail();
// user.setId(i);
user.setNamed("test"+i);
user.setAddressNamed("sdfasd");
user.setMsgd("msg");
list.add(user);
}
mongoTemplate.insertAll(list);
Query query = Query.query(Criteria.where("named").is("test1"));
List<UserDetail> lo = mongoTemplate.find(query,UserDetail.class);
for (UserDetail l:lo){
System.out.println(l.toString());
}
return "";
}
@GetMapping("/join")
public String join(){
// Query query = Query.query(Criteria.where("name").is("test1"));
// List<User> lo = mongoTemplate.find(query,User.class);
List<User> lo = mongoTemplate.findAll(User.class);
for (User l:lo){
System.out.println("User"+l.toString());
Query queryn = Query.query(Criteria.where("named").is(l.getName()));
List<UserDetail> lod = mongoTemplate.find(queryn,UserDetail.class);
// for (UserDetail ld:lod){
// System.out.println("UserDetail"+ld.toString());
// }
l.setUserDetail(lod);
System.out.println(l.toString());
}
return "";
}
}