0
まず、mongodb-promiseをMongoClientのラッパーとして使用しています。mongodb:collection.update inside cursor.eachは更新が完了する前に解決します
特定の基準に一致するコレクション "人"からすべてのレコードを取り出し、それぞれのレコードを更新する必要があります。そのために
私はすべての人を見つけるために、このコードを持っている:
return db.collection('people')
.then((collection) => {
// Store reference to collection for future use
peopleCollection = collection;
return collection.find({a:1})
})
Anは、各レコードを更新するために、これを起動します。
.then((people) => {
// Process each people
return people.each((person) => {
person.b = 2;
// Where peopleCollection is a reference to my collection
return peopleCollection.update({_id: person._id}, person)
})
})
私は、ここで、bすべての人々を取得するために別の約束チェーンを追加!= 2と私は多くのレコードを見つけ、それらを数えました。しかし、このスクリプトを繰り返し実行すると、カウントが減少し、mongoは、約束がすでに解決されても他のレコードを更新していることを意味します。私はここで何が欠けていますか?
これは、より高速なクエリを作ったが、まだそれは問題を解決していません。更新がまだ完了していない場合でも、約束はまだ解決されます。 – user3631341