Этот вопрос касается поведения QueryCursor и AggregationCursor . У меня есть следующий код в моем проекте.
for (let doc = await collection.next(); doc != null; doc = await collection.next()) {
console.log(doc)
}
Думаю, мне не нужно объяснять вам, что он делает. Так что вопрос в следующем:
Как получить доступ к предыдущему документу / значению во время итерации курсора?
Когда мы перебираем массив документов с помощью for
или .forEach
мы всегда могли получить доступ к предыдущему значению. Из-за индекса элемента массива. Но когда мы перебираем документы с помощью курсора, мы ничего не получаем, потому что это больше относится к for await.. of loop
Случай:
Я "собираю" необходимые данные во время этого цикладокументов. (Поверьте мне, в моем случае это лучше, чем aggregation
). На данный момент, единственное решение, которое я нашел, - хранить необходимое doc (уникальное) значение в специальном массиве во время цикла. Вот так.
let array = []
for (let doc = await collection.next(); doc != null; doc = await collection.next()) {
if (array.indexOf(doc.value) === -1) {
array.push(doc.value)
}
}
Так что я мог легко получить доступ к необходимому значению и сравнить его (если оно мне тоже понадобилось) с doc.value внутри / во время цикла cursor
. Но, возможно, у кого-то есть лучший опыт / вариант с этим? Особенно, если в коллекции много уникальных значений (полей документа).