В моем примере я пытаюсь найти эффективный способ удаления записей listId из списка наблюдения пользователя. Каждая коллекция пользователей имеет массив строк наблюдения, в котором пользователи могут хранить элементы, которые они наблюдают.
Sample Do c:
"watchlist": [
"5ea8449842025217ccff6aec",
"5ea844eb42025217ccff6aee",
"5ea8452b42025217ccff6af1"
],
Чтобы поддерживать чистую базу данных, я создаю функцию таймера azure для частого развертывания в найти и удалить списки элементов списков, которые больше не существуют. Там может быть много пользователей, которые имеют одинаковые записи id в своем списке наблюдения. Поэтому мне нужно очистить их с помощью регулярных проверок.
Запрос:
Post.find({
$and: [
{ watchlistCleaned: false },
{ auctionEndDateTime: { $lte: Date.now() } }
]
}).select("_id").then((res) => {
for (let i = 0; i < res.length; i++) {
console.log("res[i]")
console.log(res[i]._id)
//pretty sure this would remove the whole watchlist instead of one item so this wouldn't be ideal.
//It's needs to pull the items out on a multiple document scale
// User.deleteMany({ _id: res[i]._id },{watchlist: {$in: res[i]}})
}
})
Желаемый результат:
{ _id: 5ea84412048bf54164fe9983 }
res[i]
{ _id: 5ea8449842025217ccff6aec }
res[i]
{ _id: 5ea844c042025217ccff6aed }
res[i]
{ _id: 5ea844eb42025217ccff6aee }
res[i]
{ _id: 5ea844ed42025217ccff6aef }
res[i]
{ _id: 5ea844ee42025217ccff6af0 }
res[i]
{ _id: 5ea8452b42025217ccff6af1 }
res[i]
{ _id: 5ea85daac6e12a10b09a75a5 }