2013-11-12 6 views
0

Я как бы застрял в следующей проблеме. У меня есть MongoDB, заполненный документами, из этих документов (у меня есть список с идентификатором). Мне нужно вставить поле.MongoDB запрос вставляет поле в документ из списка Id

У меня есть этот документ:

{ 
    "id" : 3639, 
    "type" : "P", 
    "createdate" : "2011-10-19T11:45:14+0200", 
    "name_creator" : "", 
    "latitude" : "50.887", 
    "longitude" : "9.14999", 
    "themes" : [{ 
     "name" : "Fun", 
     "id" : "4" 
     }, { 
     "name" : "Kids", 
     "id" : "5" 
    }] 
} 

мне нужен запрос к можно вставить в поле темы в документе, поле текущие темы не должны быть обновления, только один новый. У меня более 300 идентификаторов, где это нужно сделать.

документ должен выглядеть следующим образом: (все остальные поля в темах должны быть удалены, только один новый один «снаружи»)

{ 
    "id" : 3639, 
    "type" : "P", 
    "createdate" : "2011-10-19T11:45:14+0200", 
    "name_creator" : "", 
    "latitude" : "50.887", 
    "longitude" : "9.14999", 
    "themes" : [{ 
     "name" : "Outside", 
     "id" : "6" 
     }] 
} 

Я обычно пишу немного Java кода, который будет перебирать документы и изменять их, но я верю (надеюсь), что это можно сделать в запросе.

Кто-нибудь понял, как я могу это сделать?

Спасибо за помощь!

ответ

1

Все, что вам нужно сделать, это

db.collection.update(
    {id : {$in : [your list of ids]}}, 
    {$set : { 
    theme : [{ 
     "name" : "Outside", 
     "id" : "6" 
    }] 
    }}, 
    {multi : true} 
) 
+0

Wow, что выглядит просто !! Я не могу попробовать прямо сейчас, но я полагаю, что список id будет разделенным запятой списком? –

+0

да, это было бы [6, 77,432, 1] –

+0

Ты герой, спасибо, очень много работает! Каждый день изучая новые вещи с MongoDB и такими, как вы и другие, на этом сайте, помогая мне в этом. Фантастика!! –

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