0

次のスキーマがあるとします

t = {name: 'John', reviews: [{sid: 1, comment: 'Great', rating: 4}, {sid: 2, comment: 'Awesome', rating: 5}]}
db.teacher.save(t)
db.teacher.find()

これで、sid 2の学生が評価を4に更新します。これをアトミックに行うための組み込みの操作はありますか?現時点では、ドキュメント全体を取得し、レビューを手動で操作してから、レビュー配列全体を$setします。それは動作しますが、少し重い感じがします。私はすべてのアトミック演算子を調べましたが、それらの多くは近づいていますが、私が見ることができるものから、それらのどれも私が求めていることを完全に実行していません。足りないものはありますか?

4

2 に答える 2

1

MongoDBは、他の多くのDBMSと同様に、更新コマンドを実装しています。

db.teacher.update({'reviews.sid': 2}, {$set: {'reviews.$.rating': 4}}, false, true);

補足として、 SQLの経験はあるが、Mongoを使い始めたばかりの人には、このチートシートをよくお勧めします。)。

于 2012-06-21T21:04:39.453 に答える
0

はい、 $ setを使用し、ドット表記を使用してキーを参照することで、必要なキーのみを直接更新できます。

于 2012-06-21T21:01:23.130 に答える