MongoDB在java代码中的增删改查

一、配置文件

pom文件中加入依赖即可在java代码中使用

       <dependency>
            <groupId>com.inphase.mjai</groupId>
            <artifactId>mjai-common-ctgcache</artifactId>
        </dependency>

在yml文件中加入连接数据的配置文件

spring:
    data:
    mongodb:
      uri: mongodb:连接路径
      database: 数据库名

二、启动项目配置

在启动类上,加入两个注解,通过springBoot启动起来的时候就可以加载MongoDB

@ComponentScan(basePackages = {"包路径"})
@SpringBootApplication(scanBasePackages = "包路径", exclude = {DruidDataSourceAutoConfigure.class})

三、项目中的应用

  1. 在代码中创建集合

先判断数据库中是否存在该集合,不存在则可以按照自己的命名规则来创建集合

判断名字为tableName的集合是否存在,存在则返回true。

mongoTemplate.collectionExists(tableName)

如果不存在则创建集合

mongoTemplate.createCollection(tableName);
  1. 往集合中放入数据

先获取集合对象

MongoCollection<Document> table = mongoTemplate.getCollection(tableName);

再组装参数,两种组装方式

1.麻烦的组装方式但简单

Document document = new Document();
document.put("字段1","值1");
document.put("字段2","值2");

2.简单的组装方式,用映射的方式将对象中的所有值都放入document中,其中faceSec就为需要存储的对象。

       Document document = new Document();
        Field[] fields = faceSec.getClass().getDeclaredFields();
         for(Field field : fields){
             field.setAccessible(true);
             document.put(field.getName(), field.get(faceSec));
        }

将数据放入集合中去

table.insertOne(doc);
  1. 分页查询、条件查询并按照规则排序

1.条件查询

先创建一个query,并且加入一个条件

Query query = new Query();
query.addCriteria(Criteria.where("deviceId").is(params.get("deviceId")));

有了这个query就可以按照这个条件进行条件查询。.find返回的是个List<对象类>。.findOne返回的是查询时传入的对象类,且只返回一个。

long total = mongoTemplate.count(query, tableName);//统计数量
mongoTemplate.find(query, 对象类.class, tableName);
  1. 分页查询并俺规则排序

在query中放入分页条件

query.skip(pageIndex * pageSize).limit(pageSize);

再加入排序条件,通过createTime倒序排

query.with(Sort.by(
                        Sort.Order.desc("createTime")
                ));

到此就进行简单的存数据与查数据。

其中的删除与修改,就和查询与写入差不多,自己去试试就可以啦。

四、在数据库中的增删改查使用

db.getCollection("表名").insert(
{字段1 : "值1",字段2 : "值2"}
);
db.getCollection("表名")。remove(
{条件1:"值1"}
);
db.getCollection("表名").update(
{条件字段1:"值1"},
{字段1:"值1",字段2:"值2"}
);

使用这样修改的时候发现如果不全部传值,则会将没传值的数据置为空值,这点和mysql不一样。

如果有哪位兄弟知道为啥欢迎评论到下面一起学习。

db.getCollection("表名").find(
{"条件1":"值1","条件2":"值2"}
);
  1. 创建集合

db.createCollection("表名");
  1. 删除集合

db.表名.drop();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值