0
我有用户和用户拥有文档。用户最多可以有100个文档。用户只能编辑最多50个文件。当我插入新文档时,首先查询User.documents以查找文档数量,然后使用userId
和isFinished=true
查询文档,并检查是否有可编辑文档的空间。有没有办法通过单个查询获取用户的total
和finished
文档?我目前的代码如下所示。不同标准的猫鼬聚合计数
var UserSchema = mongoose.Schema({
email: {type: String, index: {unique: true, sparse: true}},
password: String,
});
UserSchema.virtual('documents',{
ref: 'Document',
localField:'_id',
foreignField:'owner'
});
var DocumentSchema = mongoose.Schema({
owner : { type:mongoose.Schema.Types.ObjectId, ref: 'User' },
name: String,
data: String,
isFinished: {
type: Boolean, default: false
},
updateDate: Date
});
User.findOne({_id: req.userId}).populate('documents').exec(function(err, user) {
// user.documents == total user documents
if (user.documents && user.documents.length < 100) {
Document.count({owner:req.userId,isFinished:true},function(err,count) {
// count == finished user documents
if (count < 50) {
// do something
}
})
}
})