现在的数据结构是这样的
course:{ name:String, chapter: [{ name: String, knowledge: [{ name: String, exam: [{ name: String, }] }] }] }
要想修改knowledge.name,修改语句该怎么写?之前在修改chapter.name时我是这样写的
Course.update({ "chapter._id": req.body.id }, { $set: { "chapter.$.name": name, //名称 } }) .exec(function(err, num) { });
不知道在修改第三级嵌套文档时,$定位符改怎么使用。
実際には、ネストされたクエリやネストされた変更などを考えるのは複雑です。レイヤーごとにノードを見つける場合、効率はあまり高くありません。
リーリー率直に言えば、ドキュメント データベースは、ネストがどれほど深くても、常に json のような形式の文字列です。
最も速くて直接的な方法は次のとおりです:
プログラムが変更されていないことを確認してください。まず結果を検索し、ナレッジの名前のみを変更してから更新します。
データベース操作がぎこちなく、面倒で、非効率であると感じた場合は、データベースの構造設計を改善できるかどうかを振り返って、これがリレーショナル データベースと非リレーショナル データベースの両方に当てはまるかどうかを検討する必要があります。 http://www.cnblogs.com/mokafamily/p/4102829.html、この記事の「1. 正規化と非正規化」セクションをご覧ください