2014-06-16 56 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