MongoDB
一、summary
1、architecture
2、data type(BSON)
(1)null
(2)Boolean
(3)Float(64bit)
(4)NumberInt/NumberLong
(5)String
(6)Date
(7)Regular Expression
(8)Array
(9)Embedded Document
(10)ObjectId("_id")**
(11)Binary
(12)Code
二、installation
1、windows
(1)mongodb-win32-x86_64-2008plus-ssl-3.6.19-signed(version(3.6.19) correspond to remote mongodb version)
(2)mkdir(md) d:\data-->mongod --dbpath=d:\data
(3)mongo 127.0.0.1:27017(ellipsis)-->exit
2、linux
(1)docker search mongodb
(2)docker pull docker.io/mongo
(3)docker run ‐di ‐‐name=predator_mongo ‐p 27017:27017 docker.io/mongo
(4)mongo ip:27017
三、common basic commands
1、use database
2、db.collectionName.find()
3、db.collectionName.find({_id:"xx"})
4、db.collectionName.findOne({_id:"xx"})
5、db.collectionName.find().limit(2)
6、db.collectionName.find({key:/value/})
7、db.collectionName.find({key:{$gt:value}})-->($lt,$gte,$lte,$ne,$in:[],$nin:[])
8、db.collectionName.find({})
9、db.collectionName.find({$and:[{condition1},{condition2}]})-->($or)
10、db.collectionName.insert({content:"It is cold lately!",visits:NumberInt(10)})
11、db.collectionName.update({condition},{$set:{modifying data}});-->db.spit.update({_id:"3"},{$set:{visits:"666"}})
12、db.collectionName.update({condition},{$inc:{condition}})-->db.collectionName.update({_id:"2"},{$inc:{visits:NumberInt(1)}})
13、db.collectionName.remove({condition})
14、db.collectionName.count({condition})
四、basic java
1、mongodb-driver
1 <dependency> 2 <groupId>org.mongodb</groupId> 3 <artifactId>mongodb-driver</artifactId> 4 <version>3.8.2</version> 5 </dependency>
2、invoke
1 MongoClient client = new MongoClient("192.168.1.66"); 2 MongoDatabase spitdb = client.getDatabase("spitdb"); 3 MongoCollection<Document> spit = spitdb.getCollection("spit"); 4 Map<String,Object> map = new HashMap<String, Object>(); 5 map.put("_id",6); 6 map.put("userid","2048"); 7 map.put("content","darling is so cute!"); 8 map.put("visits",250); 9 Document document1 = new Document(map); 10 spit.insertOne(document1); 11 //BasicDBObject bson = new BasicDBObject("visits",2020); 12 BasicDBObject bson = new BasicDBObject("visits",new BasicDBObject("$gt",100)); 13 FindIterable<Document> documents = spit.find(bson); 14 for (Document document : documents) { 15 System.out.println("content: " + document.getString("content")); 16 System.out.println("userid: " + document.getString("userid")); 17 System.out.println("visits: " + document.getInteger("visits")); 18 } 19 client.close(); 20 }
五、SpringDataMongoDB
1、pom.xml
1 <dependencies> 2 <dependency> 3 <groupId>com.tensquare</groupId> 4 <artifactId>tensquare_common</artifactId> 5 <version>1.0-SNAPSHOT</version> 6 </dependency> 7 <dependency> 8 <groupId>org.springframework.boot</groupId> 9 <artifactId>spring-boot-starter-data-mongodb</artifactId> 10 <version>2.1.15.RELEASE</version> 11 </dependency> 12 <dependency> 13 <groupId>org.springframework.boot</groupId> 14 <artifactId>spring-boot-starter-data-redis</artifactId> 15 </dependency> 16 17 </dependencies>
2、application.yml
1 server: 2 port: 9006 3 spring: 4 application: 5 name: tensquare-spit 6 data: 7 mongodb: 8 host: 192.168.1.66 9 database: spitdb 10 redis: 11 host: 192.168.1.66
3、SpitApplication.java
1 @SpringBootApplication 2 public class SpitApplication { 3 public static void main(String[] args) { 4 SpringApplication.run(SpitApplication.class); 5 } 6 7 @Bean 8 public IdWorker idWorker(){ 9 return new IdWorker(); 10 } 11 }
4、Spit.java
1 public class Spit implements Serializable { 2 @Id 3 private String _id; 4 private String content; 5 private Date publishtime; 6 private String userid; 7 private String nickname; 8 private Integer visits; 9 private Integer thumbup; 10 private Integer comment;
5、SpitDao.java
1 public interface SpitDao extends MongoRepository<Spit,String> { 2 3 public Page<Spit> findByParentid(String parentid, Pageable pageable); 4 }
6、SpitService.java
1 @Service 2 @Transactional 3 public class SpitService { 4 5 @Autowired 6 private SpitDao spitDao; 7 @Autowired 8 private IdWorker idWorker; 9 @Autowired 10 private MongoTemplate mongoTemplate; 11 12 public List<Spit> findAll() { 13 return spitDao.findAll(); 14 } 15 16 public Spit findById(String id) { 17 return spitDao.findById(id).get(); 18 } 19 20 public void save(Spit spit) { 21 spit.set_id(idWorker.nextId() + ""); 22 spit.setPublishtime(new Date()); 23 spit.setVisits(0); 24 spit.setThumbup(0); 25 spit.setShare(0); 26 spit.setComment(0); 27 spit.setState("1"); 28 29 if (spit.getParentid() != null && !"".equals(spit.getParentid())) { 30 Query query = new Query(); 31 query.addCriteria(Criteria.where("_id").is(spit.getParentid())); 32 Update update = new Update(); 33 update.inc("comment",1); 34 mongoTemplate.updateFirst(query,update,"spit"); 35 } 36 spitDao.save(spit); 37 } 38 39 public void update(Spit spit) { 40 spitDao.save(spit); 41 } 42 43 public void deleteById(String id) { 44 spitDao.deleteById(id); 45 } 46 47 public Page<Spit> findByParentid(String parentid, int page, int size) { 48 Pageable pageable = PageRequest.of(page - 1, size); 49 return spitDao.findByParentid(parentid, pageable); 50 } 51 52 public void thumbup(String spitId) { 53 /*Spit spit = spitDao.findById(spitId).get(); 54 spit.setThumbup(spit.getThumbup() == null ? 0 : spit.getThumbup() + 1); 55 spitDao.save(spit);*/ 56 57 //db.spit.update({_id:"1"},{$inc:{thumbup:NumberInt(1)}}) 58 Query query = new Query(); 59 query.addCriteria(Criteria.where("_id").is(spitId)); 60 Update update = new Update(); 61 update.inc("thumbup", 1); 62 mongoTemplate.updateFirst(query, update, "spit"); 63 } 64 }
6、SpitController.java
1 @RestController 2 @CrossOrigin 3 @RequestMapping(value = "/spit") 4 public class SpitController { 5 6 @Autowired 7 private SpitService spitService; 8 9 @Autowired 10 private RedisTemplate redisTemplate; 11 12 @RequestMapping(method = RequestMethod.GET) 13 public Result findAll() { 14 return new Result(true, StatusCode.OK, "查询成功!", spitService.findAll()); 15 } 16 17 @RequestMapping(value = "/{spitId}", method = RequestMethod.GET) 18 public Result findById(@PathVariable(name = "spitId") String spitId) { 19 return new Result(true, StatusCode.OK, "查询成功!", spitService.findById(spitId)); 20 } 21 22 @RequestMapping(method = RequestMethod.POST) 23 public Result save(@RequestBody Spit spit) { 24 spitService.save(spit); 25 return new Result(true, StatusCode.OK, "保存成功!"); 26 } 27 28 @RequestMapping(value = "/{spitId}",method = RequestMethod.PUT) 29 public Result update(@PathVariable(name = "spitId") String spitId,@RequestBody Spit spit) { 30 spit.set_id(spitId); 31 spitService.update(spit); 32 return new Result(true, StatusCode.OK, "修改成功!"); 33 } 34 35 @RequestMapping(value = "/{spitId}",method = RequestMethod.DELETE) 36 public Result deleteById(@PathVariable(name = "spitId") String spitId){ 37 spitService.deleteById(spitId); 38 return new Result(true, StatusCode.OK, "删除成功!"); 39 } 40 41 @RequestMapping(value = "/comment/{parentid}/{page}/{size}",method = RequestMethod.GET) 42 public Result findByParentid(@PathVariable(name = "parentid") String parentid,@PathVariable(name = "page") int page,@PathVariable(name = "size") int size){ 43 Page<Spit> pageData = spitService.findByParentid(parentid, page, size); 44 45 return new Result(true,StatusCode.OK,"查询成功!",new PageResult<Spit>(pageData.getTotalElements(),pageData.getContent())); 46 } 47 48 @RequestMapping(value = "/thumbup/{spitId}",method = RequestMethod.PUT) 49 public Result thumbup(@PathVariable(name = "spitId") String spitId){ 50 String userid="250"; 51 if(redisTemplate.opsForValue().get("thumbup_" + userid) != null){ 52 return new Result(false, StatusCode.REPERROR, "不能重复点赞!"); 53 } 54 spitService.thumbup(spitId); 55 redisTemplate.opsForValue().set("thumbup_" + userid,250); 56 return new Result(true, StatusCode.OK, "点赞成功!"); 57 } 58 59 }