Mongoose / MongoDB при одновременном обновлении массива поддокументов обновляется, но не может найти документ, обновленный позже. - PullRequest
1 голос
/ 06 мая 2020

У меня есть документ, в котором есть массив поддокументов (размер 6), затем я удаляю 5 элементов одновременно, он отлично обновляет массив, но не могу найти документ после обновления, вот код для его обновления

await gameRoom.findOneAndUpdate({ 'players._id': currentUser._id }, { $pull: { players: { _id: currentUser._id } } }, { 'new': true },
             (err, docc) => {
                 console.log('currentUser id ' + currentUser._id + ' time ' + new Date().toUTCString());
                 console.log('doc ' + JSON.stringify(docc));
                 if (err) console.log('error at logging out gameRoom.findOne ', '\n ' + err);
                 else if (docc == null) console.log('how it can be null');


        });

, и это результат

currentUser id 5eb285720105534970994c92 time Wed, 06 May 2020 09:38:26 GMT
doc null
how it can be null
currentUser id 5eb2856a0105534970994c89 time Wed, 06 May 2020 09:38:26 GMT
doc null
how it can be null
currentUser id 5eb2856f0105534970994c8f time Wed, 06 May 2020 09:38:26 GMT
doc IsNotNull

currentUser id 5eb2856d0105534970994c8c time Wed, 06 May 2020 09:38:26 GMT
doc null
how it can be null
currentUser id 5eb285750105534970994c96 time Wed, 06 May 2020 09:38:26 GMT
doc IsNotNull

currentUser id 5eb285680105534970994c85 time Wed, 06 May 2020 09:38:30 GMT
doc IsNotNull


, поэтому сначала я вытаскиваю 5 элементов из массива, затем я извлекаю последний, как вы можете видеть в результате, все они удаляются из массива идеально с обновлением , но некоторые из них не могут добраться до cc они обновили, как это возможно?

1 Ответ

1 голос
/ 08 мая 2020

после изменения { 'new': true } на { new: true } он исправлен, также, если используется upsert: true, похоже, он также исправляет. Например {upsert:true, new: true }

...