マングースドキュメントmentionこのサンプルコード:Mongoose update()は本当に何を更新しますか?
Tank.findById(id, function (err, tank) {
if (err) return handleError(err);
tank.size = 'large';
tank.save(function (err, updatedTank) {
if (err) return handleError(err);
res.send(updatedTank);
});
});
がちょうどsize
財産(すなわちdb.tanks.update({_id: tank._id}, {$set: {size: "large"}});
)を設定MongoDBのupdate()コマンドにこの結果をいたり、これは、文書全体を交換するのですか?
findById()
が返された直後、別のクライアントが別のプロパティ(たとえば、color
)を更新すると、save()
が実行される前にどうなりますか? color
は、以前の値に戻したか、そのまま保持していますか?
また、「変更された」プロパティのみを更新するにはスマートである場合、どのように正確に検出されますか(前後の値は比較されますか?またはtank
オブジェクトのセッターを介して比較されますか?とにかくタンクsize
がすでに "大"だったらどうでしょうか?
Mongoose docsは、この上に非常に明確ではないと私はマングースはこの点でを使用することを意図し設計さとであるかを理解したいと思いますので、私は聞いていますのよ。
自分でテストするのは比較的簡単であるはずです。 – robertklep
私はテストするデータベースを持っていません。また、テストでは、ライブラリが*想定していることを正確には明らかにしません。悪いテストは、誤った仮定につながる可能性があります。 –
私はあなたがMongooseの開発者以外の誰かから、何が起こっているのかについての決定的な答えを得ているとは思っていません。通常のユーザーがここに投稿した回答は事例になります。 – robertklep