上一篇 12個MongoDB的可視化工具,以及shell 操作腳本練習
在使用SpringData MongoDB時,MongoDbRepository 有如下可利用的 CRUD 的方法
一、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<String> 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字段
}
三、還有時間格式問題,注釋中有提到
四、還有駝峰式命名,也會自動轉換的