#javascript #node.js #mongodb #mongoose #mongodb-query
Вопрос:
Добрый день и спасибо, что уделили время моему вопросу!
Я нахожусь в процессе обучения кодированию, и это мой первый вопрос здесь:
У меня есть коллекция MongoDB, которая структурирована так, как показано в следующем примере. Каждый документ представляет период, за который пользователи предоставили доступ.
{
"_id": id,
"period": 20218,
"availabilities": [{
"User": id1,
"Username": "Cool Guy",
"Useravailabilities": [9, 13, 14, 28, 29]
}, {
"User": id2,
"Username": "Nice Guy",
"Useravailabilities": [1, 2, 13, 29, 30]
}],
}
{
"_id": id,
"period": 20219,
"availabilities": [...],
}
{
"_id": id,
"period": 202110,
"availabilities": [...],
}
Я получаю период (например, 20218), идентификатор пользователя (например, id2) и день (например, 13), которые должны быть удалены из соответствующего массива Useravailabilities. Этот запрос не выполняет свою работу, может кто-нибудь, пожалуйста, помочь?
DB.updateOne({"period": 20218, "availabilities.User": id2 }, {$pull : {"availabilities.$.Useravailabilities": 13}} )
Заранее благодарю вас и приятного вам дня
Ответ №1:
DB.updateOne(
{ period: 20218 },
{ $pull: { 'availabilities.$[elem].Useravailabilities': 13 } },
{ arrayFilters: [{ 'elem.User': id2 }] }
);
Комментарии:
1. Спасибо за ваш ответ. Теперь я понимаю:
Error: Could not find path "undefined.0.User" in schema at castArrayFilters
может быть, это как-то связано с моей схемой?new mongoose.Schema({ period: Number, availabilities: [] })
2. Извините, я неправильно написал код. Я только что изменил, ты можешь попробовать еще раз.