mongodb ----> 从入门到。。。

环境:

centos6.8,jdk1.8.0_u172,mongodb-4.0.0,spring boot-1.5.15

1、环境搭建

 1 tar -zxvf mongodb-linux-x86_64-rhel62-4.0.0.tgz -C /home/rui/ #解压,指定放置位置
 2
 3 mv mongodb-linux-x86_64-rhel62-4.0.0 mongodb-4.0.0 #重命名
 4
 5 cd mongodb-4.0.0
 6
 7 vim mongodb.conf  #配置数据库db和日志log
 8      dbpath=/home/rui/mongodb-4.0.0/data/db
 9      logpath=/home/rui/mongodb-4.0.0/data/log
10
11 mkdir -p data/db #创建目录
12 mkdir -p data/log13 14 vim /etc/profile #添加环境变量15     export PATH=$PATH:/home/rui/mongodb-4.0.0/bin16 source /etc/profile17

验证mongodb安装是否正确:

1 mongo -version

启动mongodb:

1 mongod --config /home/rui/mongodb-4.0.0/mongodb.config 

启动mongodb shell:

1 mongo

2、概念

基础概念:文档、集合、数据库

英文对应:document, collection, database

其他概念:字段、索引、主键

英文对应:field, index, primary key

BSON(Binary JSON):类似json的二进制形式的存储格式

3、常用命令

1 1、显示所有数据库
2 show dbs
3
4 2、显示当前数据库
5 db
6
7 3、指定使用某数据库,当数据库xxx不存在时,该指令会创建数据库xxx
8 use xxx910 4、删除数据库11 use xxx12 db.dropDatabase()13 ===========================================================================14 5、创建集合15 use xxx16 db.createCollection("collectionName")或者 db.createCollection("collectionName", options)16      #options指定参数:capped,autoIndex,size,max1718 6、显示集合19 show collections2021 7、删除集合22 db.collectionName.drop()23 =============================================================================24 8、插入文档 24 (集合中存储的数据都是BSON格式;每个文档有默认的主键_id,默认的数据类型是ObjectId,可以任何其他数据类型)25 db.collectionName.insert(document)#_id相同时,新增失败26 db.collectionName.save(document) #_id相同时,新增会覆盖文档27 28 9、查询文档29 db.collectionName.find(<query>,<projection>)29       #返回满足条件的所有文档,query指定查询条件 projection指定返回的字段30 db.collectionName.find()#返回所有文档31 db.collectionName.findOne()#返回一条文档3233 10、更新文档34 db.collectionName.update(<query>,<update>,{upsert:<boolean>,muti:<boolean>})34      #query指定查询条件 update需要更新的对象3536 11、删除文档37 db.collectionName.remove(<query>,{justOne:<boolean>})3839 12、显示指定数量的文档40 db.collectionName.find().limit(number)4142 13、跳过指定数量的文档43 db.collectionName.find().limit(number1).skip(number2)44 db.collectionName.find().skip(number1).limit(number2)#可以实现分页

4、java操作mongodb

maven依赖:

1 <dependency>
2         <groupId>org.mongodb</groupId>
3         <artifactId>mongo-java-driver</artifactId>
4         <version>3.8.1</version>
5  </dependency>

连接mongodb,crud等测试,完整代码:

  1 package com.rui;
  2
  3
  4 import org.junit.Test;
  5 import org.junit.Before;
  6 import org.junit.runner.RunWith;
  7 import org.springframework.test.context.ContextConfiguration;
  8 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  9
 10
 11 //common
 12 import com.mongodb.client.MongoDatabase;
 13 import com.mongodb.client.MongoCollection;
 14
 15 import org.bson.Document;
 16 import java.util.Arrays;
 17 import com.mongodb.Block;
 18
 19 import com.mongodb.client.MongoCursor;
 20 import static com.mongodb.client.model.Filters.*;
 21 import com.mongodb.client.result.DeleteResult;
 22 import static com.mongodb.client.model.Updates.*;
 23 import com.mongodb.client.result.UpdateResult;
 24 import java.util.ArrayList;
 25 import java.util.List;
 26
 27 //new
 28 import com.mongodb.ConnectionString;
 29 import com.mongodb.client.MongoClients;
 30 import com.mongodb.client.MongoClient;
 31 import com.mongodb.client.MongoIterable;
 32 import com.mongodb.MongoClientSettings;
 33 import com.mongodb.ServerAddress;
 34
 35 @RunWith(SpringJUnit4ClassRunner.class)
 36 @ContextConfiguration(locations={"classpath*:spring-mongodb.xml"})
 37 public class NewMongodbConnTest{
 38
 39
 40     private MongoDatabase database = null;
 41     @Before
 42     //@Test
 43     public void ConnTest(){
 44
 45         //default port = 27017 hostname = localhost
 46         //MongoClient mongoClient = MongoClients.create();
 47
 48         //or self define port and hostname
 49         MongoClient mongoClient = MongoClients.create(
 50         MongoClientSettings.builder()
 51                 .applyToClusterSettings(builder ->
 52                   builder.hosts(Arrays.asList(new ServerAddress("192.168.0.102", 27017))))
 53                 .build());
 54
 55         // access a Database
 56          database = mongoClient.getDatabase("rui");
 57
 58         // print all collection name in database
 59          MongoIterable<String> iterable = database.listCollectionNames();
 60          MongoCursor<String> cursor = iterable.iterator();
 61          try{
 62              while(cursor.hasNext()){
 63                  System.out.println(cursor.next());
 64              }
 65          }finally{
 66              cursor.close();
 67          }
 68
 69
 70     }
 71
 72     @Test
 73     public void crudTest(){
 74
 75         // access a Collection
 76         MongoCollection<Document> collection = database.getCollection("rui");
 77
 78         // create a Document
 79         Document doc = new Document("name", "MongoDB")
 80                 .append("type", "database")
 81                 .append("count", 1)
 82                 .append("versions", Arrays.asList("v3.2", "v3.0", "v2.6"))
 83                 .append("info", new Document("x", 203).append("y", 102));
 84
 85
 86         // insert one Document
 87          collection.insertOne(doc);
 88
 89         // insert many Document
 90         List<Document> documents = new ArrayList<Document>();
 91         for (int i = 0; i < 100; i++) {
 92              documents.add(new Document("i", i));
 93         }
 94          collection.insertMany(documents);
 95
 96         // count Document in collection
 97          System.out.println("document counts: " + collection.countDocuments());
 98
 99
100         // query first Document
101          Document myDoc = collection.find().first();
102          System.out.println(myDoc.toJson());
103
104         //find all Document
105         MongoCursor<Document> cursor = collection.find().iterator();
106         try {
107             while (cursor.hasNext()) {
108                 System.out.println(cursor.next().toJson());
109             }
110         } finally {
111             cursor.close();
112         }
113
114         //query one by a filter,pay attention to Filters helper
115          Document myDoc = collection.find(eq("i", 71)).first();
116          System.out.println(myDoc.toJson());
117
118
119         // query all by a filter,pay attention to Filters helper
120         Block<Document> printBlock = new Block<Document>() {
121              @Override
122              public void apply(final Document document) {
123                  System.out.println(document.toJson());
124              }
125          };
126
127          collection.find(gt("i", 50)).forEach(printBlock);
128
129         //update one Document
130          collection.updateOne(eq("i", 10), new Document("$set", new Document("i", 110)));
131
132         //update muti
133          UpdateResult updateResult = collection.updateMany(lt("i", 100), inc("i", 100));
134          System.out.println(updateResult.getModifiedCount());
135
136         // delete one Document
137         // collection.deleteOne(eq("i", 110));
138
139         // delete muti
140          DeleteResult deleteResult = collection.deleteMany(gte("i", 100));
141          System.out.println(deleteResult.getDeletedCount());
142
143         // create index
144          collection.createIndex(new Document("i", 1));
145
146     }
147 }

windows连接linux中的mongodb,启动MongoDB方式如下:

各个代码块测试结果截图:

1、连接测试:

2、插入一条文档:

3、插入多条文档:

4、计算总文档条数:

5、查询第一条文档:

6、查询所有文档:

7、通过filter查询某条文档:

8、通过filter查询多条文档:

9、更新一条文档:

10、更新多条文档:

11、删除一条文档:

12、删除多条文档:

PojoMongodbTest.java

  1 package com.rui;
  2
  3 import org.junit.Test;
  4 import org.junit.runner.RunWith;
  5 import org.springframework.test.context.ContextConfiguration;
  6 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  7
  8 import org.bson.Document;
  9 import com.mongodb.Block;
 10 //import com.mongodb.MongoClient;
 11 import com.mongodb.MongoClientURI;
 12 import com.mongodb.client.MongoCollection;
 13 import com.mongodb.client.MongoDatabase;
 14 import com.mongodb.client.result.DeleteResult;
 15 import com.mongodb.client.result.UpdateResult;
 16 import org.bson.codecs.configuration.CodecRegistry;
 17 import org.bson.codecs.pojo.PojoCodecProvider;
 18 import com.mongodb.client.MongoClients;
 19 //import com.mongodb.client.MongoClient;
 20
 21 import java.util.List;
 22
 23 import static com.mongodb.client.model.Filters.*;
 24 import static com.mongodb.client.model.Updates.*;
 25 import java.util.Arrays;
 26 import static org.bson.codecs.configuration.CodecRegistries.fromProviders;
 27 import static org.bson.codecs.configuration.CodecRegistries.fromRegistries;
 28 import com.mongodb.MongoClientSettings;
 29 import com.mongodb.ServerAddress;
 30
 31 //@RunWith(SpringJUnit4ClassRunner.class)
 32 //@ContextConfiguration(locations={"classpath*:spring-mongodb.xml"})
 33 public class PojoMongodbTest{
 34
 35    @Test
 36    public void pojoTest(){
 37
 38      CodecRegistry pojoCodecRegistry = fromRegistries(com.mongodb.MongoClient.getDefaultCodecRegistry(),
 39                 fromProviders(PojoCodecProvider.builder().automatic(true).build()));
 40
 41
 42      /*MongoClientSettings settings = MongoClientSettings.builder()
 43         .codecRegistry(pojoCodecRegistry)
 44         .build();
 45      MongoClient mongoClient = MongoClients.create(settings); */
 46
 47      com.mongodb.client.MongoClient mongoClient = MongoClients.create(
 48         MongoClientSettings.builder()
 49                 .codecRegistry(pojoCodecRegistry)  // codec
 50                 .applyToClusterSettings(builder ->
 51                   builder.hosts(Arrays.asList(new ServerAddress("192.168.0.102", 27017))))
 52                 .build());
 53
 54      MongoDatabase database = mongoClient.getDatabase("rui");
 55
 56      MongoCollection<Person> collection = database.getCollection("people", Person.class);
 57
 58      //Insert a Person
 59      Person ada = new Person("Ada Byron", 20, new Address("St James Square", "London", "W1"));
 60      collection.insertOne(ada);
 61
 62      //Insert multi Persons
 63      List<Person> people = java.util.Arrays.asList(
 64         new Person("Charles Babbage", 45, new Address("5 Devonshire Street", "London", "W11")),
 65         new Person("Alan Turing", 28, new Address("Bletchley Hall", "Bletchley Park", "MK12")),
 66         new Person("Timothy Berners-Lee", 61, new Address("Colehill", "Wimborne", null))
 67      );
 68      collection.insertMany(people);
 69
 70      //query the collection
 71     Block<Person> printBlock = new Block<Person>() {
 72          @Override
 73          public void apply(final Person person) {
 74             System.out.println(person);
 75          }
 76      };
 77      collection.find().forEach(printBlock);
 78
 79      //query one by specifying query Filter
 80     Person somebody = collection.find(eq("address.city", "Wimborne")).first();
 81      System.out.println(somebody.toString());
 82
 83      //query all by specifying query Filter
 84      collection.find(gt("age", 30)).forEach(printBlock);
 85
 86      //update one
 87      collection.updateOne(eq("name", "Ada Byron"), combine(set("age", 23), set("name", "Ada Lovelace")));
 88
 89      //update multi ??? 原来文档少了“address.”!!!
 90      UpdateResult updateResult = collection.updateMany(not(eq("address.zip", null)), set("address.zip", null));
 91      System.out.println(updateResult.getModifiedCount());
 92
 93      //replace
 94     Person ada = new Person("Ada Byron", 20, new Address("St James Square", "London", "W1"));
 95      collection.replaceOne(eq("name", "Ada Lovelace"), ada);
 96
 97      //delete one
 98     // collection.deleteOne(eq("address.city", "Wimborne"));
 99
100      //delete multi
101      DeleteResult deleteResult = collection.deleteMany(eq("address.city", "London"));
102      System.out.println(deleteResult.getDeletedCount());
103
104      }
105 }

Person.java

 1 package com.rui;
 2
 3 import lombok.Setter;
 4 import lombok.Getter;
 5 import lombok.ToString;
 6 import lombok.NoArgsConstructor;
 7 import org.bson.types.ObjectId;
 8
 9 @Setter
10 @Getter
11 @NoArgsConstructor
12 @ToString
13 public final class Person{
14
15     private ObjectId id;
16     private String name;
17     private int age;
18     private Address address;
19
20     //public Person(){}
21
22     public Person(String name, int age, Address address){
23         this.name = name;
24         this.age = age;
25         this.address = address;
26     }
27 }

Address.java

 1 package com.rui;
 2
 3 import lombok.Setter;
 4 import lombok.Getter;
 5 import lombok.ToString;
 6 import lombok.AllArgsConstructor;
 7 import lombok.NoArgsConstructor;
 8
 9 @Setter
10 @Getter
11 @AllArgsConstructor
12 @NoArgsConstructor
13 @ToString
14 public final class Address{
15
16     private String street;
17     private String city;
18     private String zip;
19 }

1、插入一个person

2、插入多个person

3、查询全部person

4、查询满足个条件(Filter)的一个person

5、查询满足某个条件(Filter)的多个persons

6、更新满足个条件(Filter)的一个person

7、更新满足个条件(Filter)的多个person,可以通过UpdateResult类返回更新信息(官方文档的update示例有错误,少了“address.”)

8、替代满足个条件(Filter)的person

9、删除满足个条件(Filter)的一个person

10、删除满足个条件(Filter)的多个person,可以通过DeleteResult类返回删除信息

5、spring整合mongodb

1)maven依赖

 1    <dependency>
 2             <groupId>org.mongodb</groupId>
 3             <artifactId>mongo-java-driver</artifactId>
 4             <version>3.1.0</version>
 5    </dependency>
 6
 7     <dependency>
 8             <groupId>org.springframework.data</groupId>
 9             <artifactId>spring-data-mongodb</artifactId>
10             <version>1.8.0.RELEASE</version>
11     </dependency>

2)spring-mongodb.xml配置

 1 <context:property-placeholder location="classpath:/com/myapp/mongodb/config/mongo.properties"/>
 2
 3 <mongo:mongo-client host="${mongo.host}" port="${mongo.port}">
 4   <mongo:client-options
 5      connections-per-host="${mongo.connectionsPerHost}"
 6      threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
 7      connect-timeout="${mongo.connectTimeout}"
 8      max-wait-time="${mongo.maxWaitTime}"
 9      auto-connect-retry="${mongo.autoConnectRetry}"
10      socket-keep-alive="${mongo.socketKeepAlive}"
11      socket-timeout="${mongo.socketTimeout}"
12      slave-ok="${mongo.slaveOk}"
13      write-number="1"
14      write-timeout="0"
15      write-fsync="true"/>
16 </mongo:mongo-client>
17
18 <mongo:db-factory dbname="database" mongo-ref="mongoClient"/>
19
20 <bean id="anotherMongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
21   <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
22 </bean>

6、spring boot整合mongodb

1)maven依赖

1 <dependency>
2      <groupId>org.springframework.boot</groupId>
3      <artifactId>spring-boot-starter-data-mongodb</artifactId>
4  </dependency>

2)application.properties配置

1 spring.application.name=spirng-boot-mongodb
2
3 spring.data.mongodb.uri=mongodb://127.0.0.1:27017/rui

3)关注spring-data-mongodb的一个重要的类,提供了很多个实用的crud方法

1 org.springframework.data.mongodb.core.MongoTemplate; 

template是高度抽象的类,用来存储和查询文档。

参考资料:

https://mongodb.github.io/mongo-java-driver/3.8/driver/getting-started/quick-start/

https://mongodb.github.io/mongo-java-driver/3.8/driver/getting-started/quick-start-pojo/

https://docs.spring.io/spring-data/mongodb/docs/2.0.9.RELEASE/reference/html/

原文地址:https://www.cnblogs.com/mrray1105/p/9555695.html

时间: 2024-08-13 20:22:44

mongodb ----> 从入门到。。。的相关文章

MongoDB基础入门视频教程

MongoDB基础入门视频教程http://www.icoolxue.com/album/show/98

前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)

今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供数据库来存储数据,目前在各大培训机构都会有1天左右的课程进行讲解,同时在实际来发中我们有存储数据和文件的需求,我们需要了解后台数据存储和提供的数据接口,以及如何获取数据,解析数据,也就是我们常说的前后端交互,数据访问等操作,首先我们来启动mongdb服务器. mongodb服务器启动的命令窗口方法:

【MongoDB数据库】MongoDB 命令入门初探

MongoDB是一款NoSql数据库,使用了"面向集合"(Collection-Oriented)原理,意思是数据被分组存储在数据集中,被称为一个集合(Collection).每个集合(Collection)在数据库中都有一个唯一的标识名,并且可以包含无限数目的对象(BasicDBObject). 集合(Collection)的概念类似关系型数据库(RDBMS)里的表(table),对象(BasicDBObject)的概念类似于RDBMS中表的一条数据,关系数据库里插入一条数据等价于在

Mongodb的入门(8)mongodb4副本集

介绍: mongo4云19年2月16开发公布,至今已经半年,前段时间一直在用mongo3系列,4X系列新增很多新特性,下面我来简单介绍一下,先从副本集开始 副本集: 主节点宕机时从节点会自动切换成主节点. mongo4后不再提供主从复制机制 搭建副本集步骤: 第一步:安装mongo   参考:Mongodb的入门(7)window安装mongodb4 cmd >  mongo 默认安装成功了(mongo4的安装比3.x简单,我安装博客有部分图没截图,大家有需要的可以百度一下mongo4的安装)

MongoDB基础入门之一:基础入门和复制集

mongoDB基础入门 介绍 mongoDB是一个存储文档的非关系型数据库 mongoDB的结构: 数据库: 包含集合 集合: 存储文档 文档: json格式 一条命令在docker容器中运行mongoDB docker run --name mymongo -v /mongo/data:/data/db -d mongo:4 docker ps #查看容器状态 docker logs mymongo #查看日志 mongoExpress 的使用 基于网络的mongoDB数据库管理页面 dock

MongoDB 用法入门(windows)①

概述 大家对数据库肯定不陌生,肯定也有很多人用过MySQL,但是在用MySQL的时候各种建表,写表之间的关联让人非常头疼. MongoDB也是一种数据库,但是它不是用表,而是用集合来装数据的,我对这种数据储存方式很感兴趣.所以我根据MongoDB3.6的官方说明文档整理了MongoDB入门级用法,供自己开发时参考,相信对其他人也有用. 这是慕课网上MongoDB的课程:mongoDB入门篇 这是MongoDB官方说明文档:The MongoDB Manual 什么是MongoDB Mongodb

MongoDB快速入门教程 (3.2)

3.2.索引 索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,建立索引,通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录,这种扫描全集合的查询效率是非常低的,特别是在数据量特别大的时候,话费的时间就非常的多 举个例子:目前我的一个集合中有170多万条数据,我们在没有建立索引的情况下测试一下查询时间 db.course.find({"name": "mongodb入门8888"})

MongoDB快速入门学习笔记3 MongoDB的文档插入操作

1.文档的数据存储格式为BSON,类似于JSON.MongoDB插入数据时会检验数据中是否有“_id”域,如果没有会自动生成.shell操作有insert和save两种方法.当插入一条数据有“_id”值,并且现在集合中已经有相同的值,使用insert插入时插入不进去,使用save时,会更新数据. 1 > db.student.drop() 2 true 3 > db.student.insert({"_id": 1, "name":"zhang

MongoDB快速入门学习笔记1 windows安装MongoDB

1.安装MongoDB 从MongoDB官网上下载MongoDB,我下载的版本是64位的3.2.6.下载完以后直接安装,我的安装目录是D:\work\MongoDB. 2.配置MongoDB的环境变量 在PATH中添加D:\work\MongoDB\Server\3.2\bin.(配置环境变量是为了更加方便的执行bin下的命令) 3.启动MongoDB 启动MongoDB的时候使用mongod命令,--dbpath 设置数据库的路径,--logpath 设置日志文件的路径 mongod --db

MongoDB基础入门003--使用官方驱动操作mongo,C#

本篇先简单介绍一下,使用官方驱动来操作MongoDB.至于MongoDB原生的增删改查语句,且等以后再慢慢学习. 一.操作MongoDB的驱动主要有两个 1.官方驱动:https://github.com/mongodb/mongo-csharp-driver/downloads,更新的还是比较及时的,目前已经支持大部门linq语法. 2.samus驱动:https://github.com/samus/mongodb-csharp/downloads. 这个好像很久都没有更新了,估计是被抛弃了