2011-06-16 42 views
2

我有一個通過mongo-java-driver存儲的對象。對象的_id字段使用java.util.UUID。以下是通過蒙戈外殼對象的呈現:

> db.b.find() 
{ "_id" : BinData(3,"zUOYY2AE8WZqigtb/Tqztw==") } 

我有一個要求,處理通過$where條款搜索。我用下面的代碼來做到這一點:

Mongo m = new Mongo(); 
DBCollection coll = m.getDB("a").getCollection("b"); 
coll.save(new BasicDBObject("_id", UUID.randomUUID())); 
// ??? - don't know what should be specified 
DBObject query = new BasicDBObject("$where", "this[\"_id\"] == " + ???); 
coll.find(query).count() 

的問題是我應該指定,而不是???,使其工作?

感謝您的任何幫助。

回答

0

我的發現表明,只有一種方法是以基於對象的方式重寫查詢(我的意思是將$ where子句部分遷移到基於BasicDBObject的查詢)。在這種情況下,mongo-java-driver支持java.util.UUID而不需要額外的工作。