文档一对多关系
一个人有多本书
内嵌式结构:
db.person.insert({ name:'zs', age:'18', books:[{ name:'玩转HTML', price: 88 }, { name:'玩转CSS', price: 88 }] }) db.person.find({name:'zs'})
优势
一次查询就能得到所有数据
劣势
冗余数据较多, 不方便管理和更新
应用场景
数据不复杂 / 查询频率较高数据
规范式结构
db.books.insert([{ _id: 1, name:'玩转HTML', price: 88, userId:123 }, { _id: 2, name:'玩转CSS', price: 88, userId:123 }]) db.person.insert({ _id: 123, name:'ls', age:'20', booksId:[1, 2] }) db.person.aggregate([ {$lookup:{ from: 'books', localField: 'booksId', foreignField: '_id', as: 'books' }} ])
优势
冗余数据较少, 更新较为方便
劣势
查询数据相对内嵌结果稍微有点复杂
应用场景
数据比较复杂 / 更新频率较高数据