2013-07-03 84 views
1

我按照以下方法在MongoDB中創建集合,並且我想從Java代碼創建此集合的位置字段的2dsphere索引。但我無法這樣做。在Java中索引MongoDB集合

collection.ensureIndex()方法預計DBObject作爲參數,但我無法將位置傳遞給它。

如何創建在Java代碼collection.ensureIndex({"location" : "2dsphere"})MongoDB讓我在命令提示符下這樣做的。但是,我想通過用Java編寫的代碼對其進行索引。

BasicDBObject doc = new BasicDBObject("attr1", nextLine[0]) 
           .append("attr2", nextLine[1]) 
           .append("edge-metro-code", nextLine[6]) 
           .append("location", new BasicDBObject("type", "Point") 
                  .append("coordinates",latLong)) 
           .append("attr3", nextLine[9]) 
           .append("attr4", nextLine[10]) 

回答

2

您應該構建一個代表您的索引的新的DBObject。見代碼如下:

DBObject index2d = BasicDBObjectBuilder.start("location", "2dsphere").get(); 
DBCollection collection = new Mongo().getDB("yourdb").getCollection("yourcollection"); 
collection.ensureIndex(index2d); 
+0

感謝米格爾。這很好工作 – koustubhC

+0

我怎麼使用$附近與文檔的上述結構建造的收藏?我想從java中運行一個查詢,它有$ near。我試過QueryBuilder和BasicDbObject,但找不到合適的解決方案。你能幫我解決這個問題嗎? – koustubhC

3

ensureIndex()現在已被棄用。您應該使用createIndex()代替:

MongoClient mongoClient = new MongoClient(); 
DBCollection test = mongoClient.getDB("testdb").getCollection("test"); 
test.createIndex(new BasicDBObject("location","2dsphere"));