【发布时间】:2017-05-03 03:56:21
【问题描述】:
我想使用 Mongoose 返回有关用户的信息以填充他们的个人资料。我一直在使用 findOne 通过嵌入式文档和 .populate 填充他们的 cmets 列表以及基本配置文件信息。我想通过计算朋友数组中有多少对象来计算他们拥有的朋友数。
看起来聚合是其中之一,但我如何同时使用两者?还是有一种简单的方法可以在 findOne 查询中进行计数?
var UserSchema = new Schema({
username: String,
comments : [{ type: Schema.Types.ObjectId, ref: 'Comment' }],
friends: [
{
id: { type: Schema.Types.ObjectId, ref: 'User' },
permission: Number
}
]
})
var User = mongoose.model('User', UserSchema);
var Comment = mongoose.model('Comment', CommentSchema);
app.get('/profile/:username', function(req, res) {
User
.findOne({ username: req.params.username }, 'username friends -_id')
.populate({
path: 'current',
model: 'Comment',
select: 'comment author -_id date',
populate: {
path: 'author',
model: 'User',
select: 'username firstName lastName -_id'
}
})
.exec(function(err, user) {
//
})
)}
【问题讨论】:
-
为什么不使用 user.friends.length ?
标签: mongodb express mongoose mongoose-schema