我有一個蒙戈DB集合如圖MongoDB:如何在數組結構化集合中進行查詢。
{
"name": "SAM",
"collection": [
{
"date": "2013-03-16",
"values": [
{
"price": "24.0"
}
]
},
{
"date": "2013-04-20",
"values": [
{
"price": "10.0"
}
]
},
{
"date": "2013-05-18",
"values": [
{
"price": "12.0"
}
]
},
{
"date": "2013-06-22",
"values": [
{
"price": "10.0"
}
]
},
{
"date": "2013-09-21",
"values": [
{
"price": "38.0"
}
]
}
]
}
我試圖讓如圖所示 與特定日期(2013年3月16日)的數據,但我得到的所有日期的數據。
這是我試過的。
請告訴我我在做什麼錯誤。
package com;
import java.net.UnknownHostException;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.Mongo;
public class Test {
public static void main(String args[]) throws UnknownHostException {
Mongo mongo = new Mongo();
DB db = mongo.getDB("test");
DBCollection mycollection = db.getCollection("mycollection");
BasicDBObject query = new BasicDBObject();
query.put("name", "SAM");
query.put("collection.date", "2013-03-16");
DBCursor cursor = mycollection.find(query);
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
}
}
的MongoDB將返回整個記錄未記錄的一個子集。上面的「收藏」看起來是單一的記錄。您可以嘗試將其分解爲單個記錄,每個記錄都有名稱,日期和值。 – 2013-03-01 19:37:25
如果您需要爲模式使用嵌入式數組,您可以使用Aggregation Framework中的$ unwind運算符將單個文檔分解爲嵌入數組中的每個條目的文檔。 – slee 2013-03-01 19:41:10
感謝您的迴應,但我無法更改數據庫的結構。所以你的意思是說不可能避免整個記錄返回。 – Pawan 2013-03-01 19:45:55