[英]Return attributes from mongodb object- Java driver
我有mongo對象喜歡
{
"name" : "mongo",
"values" : [
{
"date" : "02-23-2015",
"price" : "5"
},
{
"date" : "02-23-15",
"price" : "6"
},
{
"date" : "02-22-15",
"price" : "7"
}
]
}
我正在使用Java驅動程序,我能夠使用如下查詢提取此對象:
QueryBuilder builder = new QueryBuilder();
DBObject nameQuery = new BasicDBObject("name", "mongo");
builder.and(nameQuery);
DBObject fullQuery = builder.get();
然而我想要的是提取所有的價格值,我想將它們存儲在一個數組中 - 現在我只能返回整個對象..通過像這樣的子集在文檔中沒有很好地解釋,一個例子會有所幫助。
任何幫助,將不勝感激。
編輯:好了,我現在可以遍歷這個數組中的對象,但它沒有利用mongo內置的ins,自然會慢一些:
while (curs.hasNext())
{
DBObject o = curs.next();
BasicDBList values = (BasicDBList) o.get("values");
BasicDBObject[] valuesArray = values.toArray(new BasicDBObject[0]);
for(BasicDBObject dbObj : valuesArray) {
name = dbObj.getString("name");
}
}
這允許我提取我想要的任何東西,但我知道有一種更有效的方法。 任何幫助都會很棒,謝謝
我認為它應該工作或它可以帶你接近解決方案:
DB db = this.getConnection();
DBCollection coll = db.getCollection(collection);
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("name", "mongo");
cursor = coll.find(searchQuery);
DBObject resultElement = null;
List <String> prices = new ArrayList<String>();
while(cursor.hasNext()){
resultElement = cursor.next();
prices.add ((String) resultElement.get("values.price"));
}
希望能幫助到你。
DBCollection.find()
方法接受一個名為keys的第二個參數,它允許您定義應該在結果中包含哪些字段。 像這樣使用它:
collection.find(query, new DBObject("values.price":1);
這將返回一個文檔,其值數組僅包含如下價格:
{
"values" : [
{
"price" : "5"
},
{
"price" : "6"
},
{
"price" : "7"
}
]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.