日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mongoose中的populate之多级填充,嵌套字段填充?

發布時間:2023/12/2 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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之多级填充,嵌套字段填充?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。