2016-07-05 2 views
2

У меня есть коллекция сессии, которая содержит элементыудалить dbref элемент из другой коллекции

{ 
    "_id" : NumberLong(1), 
    "_class" : "cws.CWSession", 
    "title" : "java ", 
    "description" : "apprendre à programmer en java" 
} 

{ 
    "_id" : NumberLong(2), 
    "_class" : "cws.CWSession", 
    "title" : "Git", 
    "description" : "Formation Git"  
} 

И у меня есть еще один сборник которые содержат dbRed из CWSession:

{ 
"_id" : NumberLong(2), 
"_class" : "cws.CollaborativeWs",  
"title" : "AngularJS", 
"description" : "AngularJS", 
"cws" : [ 
    { 
     "$ref" : "cwsession", 
     "$id" : NumberLong(1) 
    }, 
    { 
     "$ref" : "cwsession", 
     "$id" : NumberLong(2) 
    } 
] 
} 

{ 
"_id" : NumberLong(3), 
"_class" : "cws.CollaborativeWs",  
"title" : "Java", 
"description" : "principes java ", 
"cws" : [ 
    { 
     "$ref" : "cwsession", 
     "$id" : NumberLong(3) 
    } 
] 
} 

Я использую шаблон Монго служит для удаления сессия

mongoTemplate.remove(new Query(Criteria.where("_id").is(id)), CWSession.class); 

Это прекрасно работает, и сеанс удаляется в первом сборе но все же во втором, можете ли вы рассказать мне, что я могу использовать для удаления ссылки во второй коллекции? И спасибо вам заранее.

public void deleteSessionfromCW(String idCW, String idS){ 
    Query query = new Query(where("_id").is(idCW).and("cws.id").is(id)); 
    Update update = new Update().pull("cws", new BasicDBObject("id", "1")); 
    mongoTemplate.updateFirst(query, update, Item.class); 
} 

ответ

0

У меня была аналогичная проблема, и я встретил ваш оставшийся без ответа вопрос, прежде чем нашел свой ответ. Я отправлю решение на основании ответа, который я нашел для будущих Гуглеров Other Question

mongoTemplate.remove(new Query(Criteria.where("id").is(id)), CWSession.class); 
mongoTemplate.remove(new Query(Criteria.where("cws.$id").is(new ObjectId(id)), CollaborativeWs.class); 

 Смежные вопросы

  • Нет связанных вопросов^_^