2014-09-26 52 views
1

我在我的應用程序中使用彈簧數據mongodb。它使用了mongodb 2.6。我想通過mongo在插入過程中分配的id來查詢集合的文檔。我在做這樣的事情:mongoDB 2.6中的ObjectId不工作

Query query = new Query(); 
String id = "542385a91f00bf7dbeae1fc7"; 
query.addCriteria(Criteria.where("_id").new Object(id)); 
template.find(query, entity.class); 

這個查詢語句:

{ "_id" : { "$oid" : "542385a91f00bf7dbeae1fc7"}} 

當我執行上蒙戈外殼一樣,它提供了一個錯誤:

error: { "$err" : "Can't canonicalize query: BadValue unknown operator: $oid", "code" : 17287 }

怎麼辦我使用彈簧數據mongodb通過id查詢?

+0

您不能在mongo shell中用'{「_id」:{「$ oid」:「542385a91f00bf7dbeae1fc7」}}'使用'{「_id」:ObjectId(「542385a91f00bf7dbeae1fc7」)}'進行查詢。 – Wizard 2014-09-26 05:50:43

+0

好的。當我做了SerializationUtils.serializeToJsonSafely(查詢)時,這就是它打印的內容。所以,如果我必須通過ID查詢,我該怎麼做?因爲query.addCriteria(Criteria.where(「_ id」)。(new Object(id)));不起作用。它給我0結果。 – coder 2014-09-26 07:05:26

+0

您能提供文檔的插入java代碼,還是從mongo shell查詢文檔的結果? – Wizard 2014-09-26 08:52:01

回答