一、安装
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.10.tgz
tar zxvf mongodb-linux-x86_64-3.2.10.tgz #解压
mv mongodb-linux-x86_64-3.2.10 mongodb #重命名文件夹
mkdir -p /data /mongodb/data/ #创建MongoDB数据库存放路径
mkdir -p /data /mongodb/log/ #创建MongoDB数据库日志存放路径
运行:进入mongodb目录下
./bin/mongod --port 27017 --fork --dbpath=/data/mongodb/data/ --logpath=/data /mongodb/log/mongodb.log --logappend
可以将上面命令写到start.sh
以上参考:https://www.osheep.cn/4793.html
win客户端下载:https://www.mongodbmanager.com/download-mongodb-manager-free
二、使用
1、引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2、配置(不需要认证的注释掉,传空会报错)
spring.data.mongodb.host=192.168.20.224
spring.data.mongodb.port=27017
#spring.data.mongodb.username=
#spring.data.mongodb.password=
spring.data.mongodb.database=pdev
3、创建实体类
@Document(collection = "posInfo") //集合=表名称
public class PosInfo {
@Id
private Long id; //主键id
private String type;
@Indexed(unique = true) //索引的创建
private String imei;
//其他代码省略
}
4、创建service
@Service
public class PosInfoService {
@Autowired
private MongoTemplate mongoTemplate;
/**
*单条插入,
*/
public void add(xxxx) {
xxxxxx
mongoTemplate.insert(info);
}
public PositionDevInfo findByImei(String imei) {
//查找
return mongoTemplate.findOne(new Query(Criteria.where("imei").is(imei)), PosInfo.class);
}
public void save(xxx){
xxxxx
//会根据主键id决定添加还是更新
mongoTemplate.save(info);
}
}
多条件查询分页:
ArrayList<Criteria> crilist=new ArrayList<Criteria>();
if (area.length() > 0) {
crilist.add(Criteria.where("areaProjectCode").is(area));
}
if (keyword.length() > 0) {
Criteria crit = new Criteria();
crit.orOperator(Criteria.where("name").regex(".*?" + keyword + ".*?"),
Criteria.where("imei").regex(".*?" + keyword + ".*?"),
Criteria.where("phone").regex(".*?" + keyword + ".*?"),
Criteria.where("phone1").regex(".*?" + keyword + ".*?"),
Criteria.where("phone2").regex(".*?" + keyword + ".*?"));
crilist.add(crit);
}
if (company.length() > 0) {
Criteria crit = new Criteria();
crit.andOperator(Criteria.where("company").regex(company + ".*?"));
crilist.add(crit);
}
if (usable) {
crilist.add(Criteria.where("usable").is(usable));
}
if (lastTime != null) {
Criteria crit = new Criteria();
crit.andOperator(Criteria.where("lastTime").gte(lastTime));
crilist.add(crit);
}
Criteria[] arr=new Criteria[crilist.size()];
crilist.toArray(arr);
Criteria criteria1=new Criteria().andOperator(arr);
Query query=new Query(criteria1);
long count = mongoTemplate.count(query, PositionDevInfo.class); //计算总数,用于算法分页数
int pageTotal=(int) (count%pageSize==0?count/pageSize:count/pageSize+1); //总页数
int offset=(page-1)*pageSize;
Sort sort = new Sort(Sort.Direction.DESC, "lastTime");
query.with(sort); //排序逻辑
query.skip(offset).limit(pageSize); // 分页逻辑
List<PosInfo> posInfos = mongoTemplate.find(query, PosInfo.class);
更多mongoTemplate操作参考
https://www.cnblogs.com/yangxiaohui227/p/11353803.html
https://blog.csdn.net/jiangshuanshuan/article/details/93175801 (更新操作)
https://www.cnblogs.com/ityouknow/p/6828919.html 多数据源