我有User
架构的friends
模型:
friends: [{
type : Schema.Types.ObjectId,
ref: 'User'
}],
我试过了:
const user = await User.findById({ _id: userID })
.populate({ path: 'friends', options: { limit: 10 } })
这可行....但实际上它只加载了populate
只有10个朋友。我需要加载所有这些以显示朋友的数量并填充10以显示用户头像等等......
我该怎么做?
此模式还有simimar问题:
comments: [{
user: {
type : Schema.Types.ObjectId,
ref: 'User'
},
comment: {
type: String
},
date: {
type: Date,
default: Date.now
}
}]
我试过了:
它填充了所有comments.user
,但我应该怎么做呢,因为:
const user = await User.findById({ _id: userID })
.populate({ path: 'comments.user', options: { limit: 10 } })
并不限制他们......
答案 0 :(得分:0)
您可以通过使用聚合+填充类似这样的(未经测试)来解决这个问题:
var result = User.aggregate([{
$match: { // filter by user id
_id: userID
}
}, {
$addFields: { // add count of friends
numberOfFriends: { $size: "$friends" }
}
}]);
然后
User.populate(result, { path: "friends", options: { limit: 10 } }, /* your callback */);