MongoDB 實體映射


@Id
主鍵,不可重復,自帶索引,可以在定義的列名上標注,需要自己生成並維護不重復的約束。如果自己不設置@Id主鍵,mongo會自動生成一個唯一主鍵,並且插入時效率遠高於自己設置主鍵。在實際業務中不建議自己設置主鍵,應交給mongo自己生成,自己可以設置一個業務id,如int型字段,用自己設置的業務id來維護相關聯的表。

@Document
標注在實體類上,類似於hibernate的entity注解,標明由mongo來維護該表
// 若未加 @Document ,該 bean save 到 mongo 的 user collection
// 若添加 @Document ,則 save 到 reUser collection
@Document(collection="reUser")
public class User{
}

@Indexed
聲明該字段需要加索引,加索引后以該字段為條件檢索將大大提高速度。
唯一索引的話是@Indexed(unique = true)。
也可以對數組進行索引,如果被索引的列是數組時,MongoDB會索引這個數組中的每一個元素。
也可以對整個Document進行索引,排序是預定義的按插入BSON數據的先后升序排列。
也可以對關聯的對象的字段進行索引

@CompoundIndex
復合索引,加復合索引后通過復合索引字段查詢將大大提高速度。
@Document
@CompoundIndexes({
@CompoundIndex(name = "age_idx", def = "{'lastName': 1, 'age': -1}")
})
public class Person<T extends Address> {
}
寫法如上,lastName和age將作為復合索引,數字參數指定索引的方向,1為正序,-1為倒序。方向對單鍵索引和隨機存不要緊,但如果你要執行分組和排序操作的時候,它就非常重要了。

@Field
代表一個字段,可以不加,不加的話默認以參數名為列名。
給映射存儲到 mongodb 的字段取別名
在 java bean 中字段名為 firstName,存儲到 mongo 中 key 為 fName
@Field("fName")
private String firstName;

@Transient
被該注解標注的,將不會被錄入到數據庫中。只作為普通的javaBean屬性。

@DBRef
關聯另一個document對象。類似於mysql的表關聯,但並不一樣,mongo不會做級聯的操作。


參考:https://blog.csdn.net/tianyaleixiaowu/article/details/73530679


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM