2014-06-16 83 views
1

我有一個集合,它包含以下聯繫人號碼的子節點。刪除mongodb中的子節點java

{"username":"abc", 
"email": "[email protected]", 
"contact":[ 
      {"number":"4763485364","type":"mobile"}, 
      {"number":"4535345345","type":"home"} 
      ]} 

其重複設置,我想知道我怎麼可以刪除或使用MongoDB的Java驅動程序更改基於該類型的子節點的具體數目。我能夠通過集合中的find方法使用BasciDBObject刪除整個元素。但我想從特定用戶的子節點中僅刪除一個數字(「家庭」類型)。有人可以給我看一個在java中的示例代碼如何完成?

回答

2

您可以使用$ pull從數組中刪除項目。

collection.update(new BasicDBObject("username","abc"), new BasicDBObject("$pull", new BasicDBObject("comments", new BasicDBObject("type","home")))); 

此代碼將其拉離comments陣列符合條件username ="abc"集合中匹配條件type = "home",從項的元素。

希望這會有所幫助。

+0

謝謝。我嘗試過,它的工作原理。不過,我有一個問題,我是否可以對子節點進行排序並刪除頂層元素。它不適合這個問題,但是我有另一組值在子節點中有數值。那可能嗎? – Sutha

+0

是的。但是,您必須通過檢索列表,對其進行排序,刪除頂層元素,然後在數據庫中更新(如果需要)來執行此操作。如果能解決您的問題,您能否接受答案? – Priyesh