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 }

 

posted @ 2020-08-07 19:59  遥~  阅读(133)  评论(0编辑  收藏  举报