博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDbRepository的常用AP操作和易错点
阅读量:3922 次
发布时间:2019-05-23

本文共 1516 字,大约阅读时间需要 5 分钟。

上一篇

在使用SpringData MongoDB时,MongoDbRepository 有如下可利用的 CRUD 的方法

在这里插入图片描述

一、insert和save的区别

都是添加保存操作,区别在于当传入主键(不必要)添加时,insert 有插入数据的含义,当有主键冲突时,会报错,而save操作是替换的意思,会覆盖当前主键的数据

二、关于主键是Long类型和String类型的问题

@Accessors(chain = true)@Data@Document(collection = "article_info")public class Article {    @Id    private String id;    @Field("title")    private String title;    @Field("url")    private String url;    @Field("author")    private String author;    @Field("tags")    private List
tags; @Field("visit_count") private Long visitCount; @Field("add_time") private Date addTime;}
@Data@NoArgsConstructor@AllArgsConstructor@Accessors(chain = true)@Document(collection = "person")public class Person {    @Id    private Long id;    private String firstname;    private String lastname;    private LocalDate birthday;}

1.1 主键为String时,添加时,主键可以指定也可以不指定,Mongo库会自定生成24位的Hash主键,或者你所指定的主键值

1.2 主键为Long类型时,必须给给主键赋值才能添加(Mongo shell操作可以不必须,会自动hash主键值)

1.3 两种类型在Mongo库的存储格式也是不同的

{    "_id": NumberLong("5"),    "firstname": "李",    "lastname": "啸",    "birthday": ISODate("1975-03-04T16:00:00.000Z"),    "_class": "demo3.model.Person"}
{    "_id": ObjectId("5d285daff2067e140813dfb4"), // 这里主键会自动加下划线    "title": "Q2SNdr7",    "url": "http://Wn29gk",    "author": "ut minim magna",    "visit_count": NumberLong("91559171"),     // 注意这里其实是忽略驼峰式命名的    "add_time": ISODate("1993-03-25T00:00:00.000Z"), // 日期类型存在形式,返回对象时,会格式转换为 1993-03-25    "_class": "demo3.model.Article"  // 会添加 _class字段}

三、还有时间格式问题,注释中有提到

四、还有驼峰式命名,也会自动转换的

转载地址:http://hygrn.baihongyu.com/

你可能感兴趣的文章
.NET开源5年了,这些宝藏你还没get?
查看>>
【日常排雷】 .Net core 生产环境appsetting读取失败
查看>>
从内存中释放Selenium chromedriver.exe
查看>>
如何在 C# 中使用 MSMQ
查看>>
小试elsa
查看>>
巧用 Lazy 解决.NET Core中的循环依赖关系
查看>>
微前端架构在容器平台的应用
查看>>
C# 中的 null 包容运算符 “!” —— 概念、由来、用法和注意事项
查看>>
仓储模式到底是不是反模式?
查看>>
【One by One系列】IdentityServer4(一)OAuth2.0与OpenID Connect 1.0
查看>>
为什么人和人的差距这么大?
查看>>
ML.NET 推荐引擎中一类矩阵因子分解的缺陷
查看>>
微软2020开源回顾:止不住的挨骂,停不下的贡献
查看>>
说说 RabbiMQ 的应答模式
查看>>
OpenTelemetry - 云原生下可观测性的新标准
查看>>
使用 ML.NET 实现峰值检测来排查异常
查看>>
通过 .NET NativeAOT 实现用户体验升级
查看>>
如何友好的处理 WebApi 中抛出的错误
查看>>
因MemoryCache闹了个笑话
查看>>
Dotnet的垃圾回收
查看>>