嗨我在MongoDB中遇到了一些麻煩。用java讀取文檔是沒有問題的,但要讀取數組中的內容是一個問題。可以說我有一個集合myCol:在mongodb中讀取數組?
{"name": "lenny linux", "gender": "m", "computers": [{"name": "computer"}, {"name": "computer2"} {"name"...}]}
所以有一個數組與電腦。我可以
DBCollection myCol = getCollection(...);
BasicDBObject query = new BasicDBObject();
query.put(name, "lenny linux");
DBCursor cursor = myCol.find(query);
while (cursor.hasNext()) {
System.out.print(cursor.next());
}
閱讀整個文檔,但我需要的只是計算機的名稱,所以我必須以某種方式讀取陣列。不要在MongoDB中得到這個數組的東西。還有,如果我想從MongoDB數組中刪除某些東西呢?它不同於刪除一個正常的文件...謝謝你的幫助!
編輯:如果即時讀取mongodb頁面:http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-ValueinanArray我真的不知道它。他們有一系列的顏色,然後他們像這樣讀取紅色:
db.things.find({ colors :"red" });
爲什麼要這樣做?如果我想讀一個數組來知道數組內部是什麼。用戶不知道有「紅色」或藍色或其他。也許陣列顏色是空的?然後我得到一個null,0或其他什麼,如果有4種顏色,然後給我這些顏色,打印出來。我沒有其他的例子...我很抱歉我的英語不好。
EDIT2: 好了,所以對我來說是新的解決方案是讓整個文檔,其中name ==萊尼的Linux(如在我的代碼中的第一次),然後以這個文件與一個外部JSON解析器解析一樣json-simple。那麼也許這不是最好的解決方案,因爲最好的解決方案是獲取數組中的東西,而不使用其他庫,只是使用mongolib ...但確定它的工作:)如果有人知道一個更簡單的方法只是發佈在這裏。謝謝。
這裏有什麼問題? – milan
如果我這樣做我回來一個整個文件與id,名稱,性別和一切。但我只想獲得數組中的名稱。因此,一個System.out.print(myFunctionToReadComputersFrom(「lenny linux」))應該打印出來:computer,computer2,... – OverStack
這就是mongodb的工作原理,它存儲文檔,讓我們來查詢文檔。一個文件,你必須把它拉出來 – milan