MongoDB使用记录

安装MongoDB(Mac环境)

本次安装没有使用brew,而是直接从官网下载的方式,官网下载地址如下:
https://www.mongodb.com/download-center/community
记得页面中间的选项栏要选到Server

下载页面

选择合适的版本、系统和安装包格式之后,直接Download即可,安装包下载好之后

# 解压安装包
tar -zxvf mongodb-macos-x86_64-4.2.0.tgz
# 对安装目录进行重命名
mv mongodb-macos-x86_64-4.2.0/ mongodb
# 将安装目录复制到"/usr/local/"目录下
cp -R mongodb /usr/local/

# 修改环境配置文件(以".bash_profile"为例),并使其生效
vim .bash_profile
export PATH=${PATH}:/usr/local/MongoDB/bin
source .bash_profile

# 接着需要手动创建一个目录"/data/db",并修改该目录的权限,该目录用于放置数据库内容
sudo mkdir -p /data/db
sudo chmod -R 777 /data/db

到此,MongoDB就安装好了,接下来我们可以执行以下操作

# 启动MongoDB的服务(默认方式)
mongod
# 启动MongoDB的服务(指定方式,适用于自定义目录和端口的情况,不加则使用默认配置)
# 默认的数据库目录为“/data/db”,默认端口为27017
mongod --dbpath 目标地址绝对路径 --port 端口号
# 打开终端模式
mongo

MongoDB基础知识

数据库:用于存放集合的仓库
集合:类似于数组,内部可以存放若干个文档
文档:MongoDB中的最小单位,常用的操作都对其执行,每个文档默认存在一个名为“_id”的属性,在不特意设置的情况下,该属性值的格式为:ObjectId("xxxxxxxxxxxxx")

在MongoDB中,数据库和集合无需手动创建,我们可以直接进入和使用,当有文档生成的时候会自动创建对应的数据库和集合。

MongoDB常用指令如下:

# 查看所有的数据库,两种方式结果一致
show dbs
show databases

# 进入指定数据库
use 数据库名

# 查看当前使用的数据库名
db

# 查看当前库中存在的所有集合
show collections

# --------------------------------------------------------------------------------

# 在指定集合中插入一个文档
db.集合名.insert({name: "zhangsan",age: 18});

# 在指定集合中插入多个文档,小括号内部先是加上数组的[],内部再是若干个JSON对象
db.集合名.insert( [ {name: "lisi",age: 20}, {name: "wangwu",age: 24}, ... ] );

# --------------------------------------------------------------------------------

# 删除指定集合
db.集合名.drop();

# 删除指定集合下所有的文档对象,记得必须加上 {}
db.集合名.remove({});

# 删除指定集合下满足条件的所有文档对象
db.集合名.remove(JSON对象条件);

# 删除指定集合下满足条件的第一个文档对象
db.集合名.remove(JSON对象条件, true);

# --------------------------------------------------------------------------------

# 覆盖指定集合下满足条件的第一个文档对象
db.集合名.update(原JSON对象条件, 新JSON对象全属性);

# 新增/局部修改指定集合下满足条件的第一个文档属性
db.集合名.update(原JSON对象条件, {$set: {该JSON对象需要更新/新增的键值对}});

# 删除指定集合下满足条件的第一个文档属性
db.集合名.update(原JSON对象条件, {$unset: {需要删除的属性名:1}});

# 新增/局部修改指定集合下满足条件的所有文档属性
db.集合名.update(原JSON对象条件, {$set: {该JSON对象需要更新/新增的键值对}}, {multi: true});
db.集合名.updateMany(原JSON对象条件, {$set: {该JSON对象需要更新/新增的键值对}});

# 向指定单个数组文档中添加一个属性值,若有嵌套则属性名必须加双引号
db.集合名.update(原JSON对象条件, {$push: {需新增的键值对}});

# 向指定单个数组文档中添加一个属性值,若已存在该属性值则不会变更
db.集合名.update(原JSON对象条件, {$addToSet: {需新增的键值对}});

# 增加指定文档中原有属性值的数值,即在原有基础上进行运算
db.集合名.update(原JSON对象条件, {$inc: {属性名: 增长值}});

# --------------------------------------------------------------------------------

# 查询当前集合下的所有文档对象,默认按照“_id”的顺序升序排序
db.集合名.find();

# 查询指定集合下满足条件的文档,比如查找所有年龄为18的文档对象
# 该方法返回值为一个数组,可以在语句后方加上"[索引]"来获取特定的文档
db.集合名.find({age: 18});

# 查询指定集合下满足条件的嵌套文档,比如查找所有用户中等级为6级的文档对象
# 注意在使用嵌套语句时,条件属性名必须加上双引号
db.集合名.find({"user.level": 6 });

# 查询指定集合下满足运算条件的文档,比如查找年龄18到24的文档对象,多个条件用逗号分隔
# 运算符:1.大于:$gt  2.小于:$lt  3.大于等于:$gte  4.小于等于:$lte  5.不等于:$ne
db.集合名.find({age: {$gt: 18, $lt: 24}});

# 查询指定集合下满足运算条件的文档,比如查找年龄小于18或大于24的文档对象
# 运算符:1.或:$or
db.集合名.find({$or:[ {age: {$lt: 18}}, {age: {$gt: 24}} ]});

# 查询指定集合下满足条件的第一个文档,比如查找第一个名为lisi的文档对象
db.集合名.findOne({name: "lisi"});



# 查看指定集合下文档的总数量
db.集合名.find().count();

# 查看指定集合下所有的文档,并按照后续属性排序
# 其中“1”代表升序,“-1”代表逆序;多个排序属性区分先后顺序
db.集合名.find().sort({排序属性名一: 1}, {排序属性名二: -1});

# 对查询结果数量进行过滤,若不写skip则默认从开头显示,即 skip(0)
db.集合名.find().skip(跳过数量).limit(显示数量);

# 对查询结果字段进行过滤,例如只想显示username
# 其中“_id”默认显示,参数中1代表显示,0代表不显示
db.集合名.find({}, {username: 1, _id: 0});

# --------------------------------------------------------------------------------

# 在MongoDB中,支持for循环操作
for(var i=0; i<100; i++){
    db.集合名.操作名(...);
}

Spring Data MongoDB

Spring Data MongoDB是由SpringData提供的与MongoDB文档数据库集成的依赖模块。 Spring Data MongoDB的关键功能区域是一个以POJO为中心的模型,该模型用于与MongoDB DBCollection进行交互并轻松编写存储库样式的数据访问层。

导入相关依赖


    org.springframework.boot
    spring-boot-starter-data-mongodb
    2.1.3.RELEASE

接着可以在项目的配置文件application.yml中加入MongoDB的相关配置

spring:
    data:
        mongodb:
            host: 127.0.0.1      #主机名
            database: demo_db    #数据库名称
            port: 27017          #端口

接下来需要创建一个实体类,示例如下:

@Data
@Document(collection = "your_collection_name")
public class User {
    @Id
    private String id;
    private String username;
    private String password;
}

实体类创建好之后,就需要有一个Repository类,该类需要继承MongoRepository类,内部已经封装好一些常用的方法,示例如下:

@Repository
public interface UserRepository extends MongoRepository {
}

到此,我们就可以在业务层添加UserRepository对象,来完成对应的操作

@Service
public class UserService {
 
    @Autowired
    private UserRepository userRepository;

    public void saveUser(User user) {
        this.userRepository.save(user);
    }
}

关于UserRepository的具体操作方法规范可以参考Spring Data JPA官方规范,网址如下:
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#reference

JPA方法规范

你可能感兴趣的:(MongoDB使用记录)