Хорошо, так что я ищу, чтобы обновить все документы, соответствующие ниже запрос:
var searchArray = ["AH Refer"
];
db.ReasonTest.find({
$and: [
{
"Values.Reason": {
$in: searchArray
}
},
{
"Values.Modules": {
$all: ["Provider Search"]
}
}
]
});
Моя структура документа выглядит следующим образом:
{
"_id" : ObjectId("537398e92db5868b145f5f29"),
"ID" : NumberLong(1),
"Name" : "MCC",
"Values" : [
{
"ID" : NumberLong(1016),
"Reason" : "COB",
"Modules" : [
"SRA"
]
},
{
"ID" : NumberLong(104),
"Reason" : "AH Refer",
"Modules" : [
"Provider Search"
]
}
]
}
И в основном, что я хочу сделать, найти все причины (корневой документ), который имеет одно из значений выше (например, «AH Refer») в поле Reason массива Values. Если у них есть «Поиск провайдера» в массиве Modules, я хочу удалить «Поиск провайдера» из массива Modules на это значение в «Значениях». У меня очень тяжелое время для этого клиента. Очевидно, что их структура не идеальна (поддержка вложенных массивов в Mongo не очень хороша), но я надеюсь, что один из вас wizkids может мне помочь. Заранее спасибо! :)
Я получаю сообщение об ошибке говорящее результат не имеет свойства? Кроме того, поведение, которое я вижу, похоже на то, что было создано моим решением. Он удаляет модуль «Поиск провайдера» из первого, который он соответствует, но все остальные, которые он должен удалить, все еще существуют. –
Я заметил, что вы упомянули об этом, возможно, придется запускать несколько раз. Не могли бы вы объяснить, почему это так? –
@ Kyle Richter, вы можете вставить здесь полное сообщение об ошибке? – Wizard