2012-06-10 2 views
0

У меня есть структура, подобная следующей, и я пытаюсь удалить один элемент из массива. До сих пор я не мог это понять. Какие-либо предложения?Как удалить элемент массива, используя Play Morphia

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

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

    ] 
} 

У меня есть модель «cart», которая имеет встроенный документ под названием «фрукты». Да, это фиктивные примеры, но проще объяснить корзину фруктов, чем то, над чем я работаю. Дальше я получил звонки.

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

Любое руководство было бы удивительным здесь.

ответ

1

Сначала выяснить телегу, из которого вы хотите удалить один плод:

Cart cart = Cart.findById(cartid); 

Второе местонахождение фрукты и удалить его:

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

Есть ли способ, чтобы быть более эффективным с помощью $ вытащить операнд? – darren

+0

Я видел следующий синтаксис в mongodb, но не был уверен, как это сделает морфия. {$ Pull: {posts: {id: "wwwwwiasdfn234oiasf"}}} – darren

+0

grrr ... редактор комментариев при укусах stackoverflow :( – darren