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
}
})
}
})