[英]How to get the ObjectId value from MongoDB?
我在Java的Play framework 2
使用Jongo
。 我在MongoDB
添加了一些數據。
{"_id" : ObjectId("538dafffbf6b562617252178"), ... }
但是,當我從數據庫中獲取ObjectId
,它就像:
de.undercouch.bson4jackson.types.ObjectId@484431ff
而不是538dafffbf6b562617252178
。 我不太了解如何獲取ObjectId
值。 我的課程定義如下:
public class Product {
@JsonProperty("_id")
protected String id;
...
public Product() {
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
編輯
為了獲取數據,我僅使用Jongo
提供的find()
函數,如下所示:
public static Iterable<Product> findAll(){
return products().find().as(Product.class);
}
您的ObjectId類型為de.undercouch.bson4jackson.types.ObjectId。 通過查看源代碼,您可以看到在該類上沒有定義toString
方法,因此使用了默認的toString
實現。
MongoDB的ObjectId實際上是使用以下內容構造的12位BSON類型:
a 4-byte value representing the seconds since the Unix epoch, a 3-byte machine identifier, a 2-byte process id, and a 3-byte counter, starting with a random value.
您使用的類的構建方式有些不同-內部存儲為3個整數。 它具有公共的getTime
, getMachine
和getInc
方法,因此您可以使用這些值創建自己的方法。 這樣的事情可能會為您提供所需的東西:
(id.getTime() + id.getMachine() + ide.GetInc()).toHexString()
用@JsonProperty(“ _ id”)注釋的id字段僅表示您的產品文檔具有自定義ID(即由用戶設置,例如:1234、5678等)
您應該同時使用@Id和@ObjectId注釋對id字段進行注釋,以告訴Jongo將id字段作為由MongoDB管理的真實ObjectId進行處理。
public class Product {
@org.jongo.marshall.jackson.oid.Id
@org.jongo.marshall.jackson.oid.ObjectId
protected String id;
...
public Product() {
}
}
反序列化期間,ObjectId的字符串表示形式將設置為Product實例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.