2017-06-16 108 views
0

我在我的數據庫中有這個。使用java檢索mongodb數組元素

{ 
"_id" : ObjectId("59424f41baaacf1f40815ae8"), 
"first_name" : "Yazid", 
"last_name" : "Amir", 
"gender" : "Male", 
"hobby" : ["Memanah", "Business", "Fusal", "Makan"] 
} 

假設我想從數組愛好中檢索「業務」。所以我的代碼將是這樣的

MongoCollection collection = db.getCollection("customers"); 
BasicDBObject whereQuery = new BasicDBObject(); 
whereQuery.put("first_name", "Yazid"); 

MongoCursor<Document> cursor = collection.find(whereQuery).iterator(); 

try { 
while (cursor.hasNext()) { 
    Document str = cursor.next(); 



    out.println(str.get("hobby.0")); // display specific field 
} 
} finally { 
cursor.close(); 
} 

但是,結果爲空。

+0

獲取這實際上是'「業餘愛好」'屬性,然後訪問像一個正常的Java列表的數組。 MongoDB「Dot notation」不適用於Java對象。 –

回答

1

使用List<Document>來存儲你的陣列

while (cursor.hasNext()) { 
    Document str = cursor.next(); 

    List<Document> list = (List<Document>)str.get("hobby"); 

    out.println(list.get(0)); // display specific field 
} 
+0

哇。謝謝。有用!! –

+0

很高興我能幫忙:) –