Можно как удалить, так и обновить несколько документов с помощью одного запроса.
удалить
Вам нужно использовать запрос с селектором, используя $in
, и массив значений _id
для сопоставления.
С Jongo вы можете создать список, соответствующий $in
в запросе, несколькими способами.
// pass an array of ids
ObjectId[] ids = {id1, id2, id3};
collection.remove("{ _id: { $in: # } }", ids);
// or pass each id separately
collection.remove("{ _id: { $in:[#, #, #] }}", id1, id2, id3);
обновить
Точно такая же концепция, как и выше, с использованием $in
для выбора объектов, которые вы хотите обновить, однако вы также должны установить multi
опцию, чтобы обновление применялось ко всем документам, которые оно матчи против, а не только первый.
С Джонго это делается так
ObjectId[] ids = {id1, id2, id3};
collection
.update("{ _id: { $in: # } }", ids)
.multi()
.with({ $set: { foo: "bar" });
person
davnicwil
schedule
23.07.2015
$in
со списком. Поэтому, если вы можете каким-то образом отобразить все ваши значения_id
в типе списка, вы сможете отправлять их в качестве аргумента с помощью этого оператора. Я вижу, что есть раздел о шаблонах запросов под примерами запросов на основном сайте, которые могут относиться к этому. - person Neil Lunn   schedule 05.06.2014runCommand
этого. Или, возможно, другой API массового обновления, предоставляемый вашим драйвером Java, если это недавняя версия. - person Neil Lunn   schedule 06.06.2014