mongodb mac版

安装mongodb数据库

需要在bin的同级目录下创建data/db

 创建之后链接

进入mongod包的bin目录下输入mongod,启动MongoDB数据库,需要上面的data/db存放数据的目录,如果没有可以通过--dbpanth配置

进入mongod包的bin目录下输入mongo,启动一个可以使用shell操作数据库的页面

运行mongo

然后进入shell指令模式

MongoDB数据库

是通过集合来管理数据库的,类似mysql里的表,但是字段可以随意,而且字段可以存储集合和数组,不会像mysql的表一样,一旦字段确定,字段类型局限,更改麻烦,mongdb比较灵活。

shell命令:

show dbs(显示所以数据库)

use 数据库名字

使用数据库,使用数据库如果不插入数据,继续show dbs是看不到数据库test3的

创建访问数据库用户

db.createUser(

{

        user:"test",//用户名

        pwd:"12345",//密码,注意:如果密码是全数字,在idea集成springboot时候需要加双引号!

        roles:[//角色

                { role: "readWrite",db:"test3" }       //role:权限,db:数据库名

        ]

}

登陆数据库

use test3

db.auth("test","12345")

回车,控制台输出1说明登陆成功。

插入数据:insert()

语法:db.集合名.insert({集合元素})

集合有一个id字段,作为整个文档的主键,当没有给该字段赋值,会自动生成一个ObjectId类型的主键,在集成springboot时,要给对应id字段赋值,而不让系统自动生成。

 查询数据:find()

语法:db.集合名.find()

查询集合中所有元素

通过条件查询

db.集合名.find({_id:"mongodb"})

db.集合名.find({"集合元素.集合属性":值})     如果有更大查询要求可以使用表达式{$gt:值}表示大于该值的数据。

gt(大于)、gte(大于等于)、lt(小于)、lte(小于等于)、eq(等于)、ne(不等于)、in(等同于in,例如db.baike.find({tag:{$in:["IT","Spring"]}},只可以在数组中使用)、nin(not in)

更新数据:updateone()

db.集合名字.updataOne(查询条件,更新内容,)替换某字段内容

> db.baike.updateOne({_id:"springmvc"},{$set:{"desc":"sprngboot"}});
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
> db.baike.find()
{ "_id" : "springmvc", "comment" : { "good" : 200000, "bad" : 12 }, "desc" : "sprngboot", "tag" : [ "IT", "Spring" ] }

db.集合名字.updataMany(查询条件,更新内容,)

db.集合名字.replaceOne(查询条件,更新内容,)替换满足条件的整一行(除了主键_id外)数据

> db.baike.replaceOne({_id:"springmvc"},{desc:"springboot",tag:["1","2"]});
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
> db.baike.find()
{ "_id" : "springmvc", "desc" : "springboot", "tag" : [ "1", "2" ] }

删除操作deleteOne()

db..deleteMany({条件})删除满足条件的所有文档,没有制定条件,删除全部文档

db.deleteOne({条件})

集成Springboot

加入依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>

且在application.yml中配置MongoDB连接信息

spring:
  data:
    mongodb:
      host: localhost
      port: 27017
      username: root
      password: "12345"
      database: baike

API

MongoTemplate

在Controller层的类中声明实例变量

import org.springframework.data.mongodb.core.MongoTemplate;
import javax.annotation.Resource;
@RestController
public class testController {
@Resource
    private MongoTemplate mongoTemplate;
}

插入方法insert(),save()

mongoTemplate.insert(Object obj);
mongoTemplate.save(Object obj);

两者的区别

解释比较好的博客:mongodb insert()和save()的相同点和不同点_那年那些事儿-CSDN博客

查找方法findById(name,Class)

通过_id=name查找数据,返回一个对象。

Baike baike = mongoTemplate.findById(id, Baike.class);

查找方法find(Query query, Class<T> entityClass)

@GetMapping("/baike/comment/{bad}")
    public List<Baike> findBaiKeId(@PathVariable int bad){
        Criteria criteria = where("comment.bad").is(bad);
        baiKes = mongoTemplate.find(query(criteria), Baike.class);
        return baiKes;
    }
Criteria criteria = where("comment.bad").is(bad);通过where条件来筛选目标,然后还能继续.and().is或者.and().gt()。然后通过query()方法转化为Query,然后调用find方法来查找符合class的集合。这里的Baike.class需要添加注解@Document(collection = "增改改查的集合名")指定操作的集合,集合名的属性如果与属性名字不一样可以使用@Field注解。
@Data
@Document(collection="baike")
public class Baike {
    @Field("_id")
    private String id;
    private String desc;
    private List<String> tag;
    private Comment comment;
    private Date crateDate;
    private Date updateDate;
}

分页 

query.limit(limit);//每一页的个数
query.skip(offset);//需要跳过多少个数据limit*(页数-1)
query.with(Sort.by(Sort.Direction.DESC, "createTime"));//按创建时间降序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值