mongoose中的populate之多级填充,嵌套字段填充?
生活随笔
收集整理的這篇文章主要介紹了
mongoose中的populate之多级填充,嵌套字段填充?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在mongoose中存引用的時候如果是多級,查詢的時候填充引用字段會使用populate,如下:
定義一個User,有字段friends每一項是自己collection的ObjectId。
// file: user-schema.js let mongoose = require('mongoose') let ObjectId = mongoose.Schema.Types.ObjectIdmodule.exports = new mongoose.Schema({name: String,friends: [{type: ObjectId, ref: 'User'}] }) // file: user-model.js let mongoose = require('mongoose') let userSchema = require('./user-schema.js')module.exports = mongoose.model('User', userSchema)定義一個commentSchema有字段from是User的_id,還有嵌套字段reply每一項是一個document有字段from和to都是User的_id
// file: comment-schema.js let mongoose = require('mongoose') let ObjectId = mongoose.Schema.Types.ObjectIdmodule.exports = new mongoose.Schema({from: {type: ObjectId, ref: 'User'},content: String,reply: [{to: {type: ObjectId, ref: 'User'},from: {type: ObjectId, ref: 'User'},content: String}] })下面開始查詢。
// file: comment-model.js let mongoose = require('mongoose') let ObjectId = mongoose.Schema.Types.ObjectIdmodule.exports = mongoose.model('Comment', userSchema) let Comment = require('./comment-model.js')Comment.findOne({}).populate('from') // 填充from字段.populate('reply.to reply.from') // 填充reply字段下的to和from注意:reply下的字段to和from的填充,并不是mongoose官文populate章節中的多級填充。
// file: comment-model.js Coment.findOne({}).populate({path: 'from', populate: {path: 'friends'}})填充from字段查詢出來的結果中的friends字段才是多級填充。
多級指的是需要填充的字段是在查詢出來的數據對應的Schema中定義的。而第一個查詢的填充類型的定義都是在comment-schema.js中,無論是from字段還是reply下面的to和from。而第二個查詢的字段from是在comment-schema.js中定義,但是查詢出來的document User 中的friends字段則是在user-schema.js中定義的。
我的理解是:準確的說多級是需要填充的字段是填充過后出現的。而字段的嵌套不能說是多級,至少我是這么認為的。
總結
以上是生活随笔為你收集整理的mongoose中的populate之多级填充,嵌套字段填充?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 行内格式化
- 下一篇: javascript中令人迷惑的this