如何使用Play Morphia删除数组项

时间:2012-06-10 07:28:00

标签: playframework morphia

我有一个像下面这样的结构,我试图从数组中删除一个项目。到目前为止,我还没弄清楚这一点。有什么建议吗?

{
   "_id" : "4fd4466c03644ec6ec6d5fe1",
   "fruit" : [

         { "id" : "4fd4466c03644ec6ec6d5fdf", "name" : "avocado", "quantity" : "2"  },
         { "id" : "4fd4466c03644ec6ec6d5fe0", "name" : "apple",   "quantity" : "34" },

   ]
}

我有一个“购物车”模型,其中有一个名为“fruit”的嵌入式文档。是的,他们是虚假的例子,但解释一个水果车比我正在做的更简单。我接到电话的时间最远。

MorphiaQuery q = Cart.q().filter("_id",cartid);
Cart.o().removeAll("fruit", ?????).update(q);

这里的任何指导都很棒。

1 个答案:

答案 0 :(得分:1)

首先找出你要从中删除一个水果的购物车:

Cart cart = Cart.findById(cartid);

然后找到水果并将其移除:

for (Fruit f: cart.fruit) {
    if (f.name.equals("apple")) {
        cart.fruit.remove(f);
        cart.save();
        break;
    }
}