【发布时间】:2019-09-02 20:19:07
【问题描述】:
我创建了一个员工考勤应用程序,其中考勤记录并存储在数据库中。我试图获取值为"Present" 的所有日期字段的计数。数据存储在数据库中,如下所示:
"attendances": { <YYYY-MM-DD>: "value" } pair
// The values being "Absent" or "Present" whatever the case may be.
问题是,每当我尝试用"attendances": {"2019-08-28": "Present"} 计算所有条目时,我都会得到0 的值。
谁能帮我找出做错了什么?
//架构
const Schema = mongoose.Schema;
const employeeSchema = new Schema({
name: String,
department: String,
origin: String,
employDate: String,
attendances: Object
});
module.exports= Employee = mongoose.model('Employee', employeeSchema);
route.js
router.get('/',(req,res)=>{
Employee.collection.countDocuments({"attendances.date":"present"},(err,data)=>{
if(err){
res.status(500)
res.send(err)
}else{
res.status(200)
res.json(data)
}
})
})
//存储在MongoDB中的数据
{
"_id": "5d6565236574b1162c349d8f",
"name": "Benjamin Hall",
"department": "IT",
"origin": "Texas",
"employDate": "2019-08-27",
"__v": 0,
"attendances": {
"2019-08-28": "Sick"
}
},
{
"_id": "5d6367ee5b78d30c74be90e6",
"name": "Joshua Jaccob",
"department": "Marketing",
"origin": "new york",
"employDate": "2019-08-26",
"__v": 0,
"attendances": {
"2019-08-26": "Present",
"2019-08-27": "Sick"
}
},
【问题讨论】:
-
您正在尝试计算数据库中未定义的
attendence.date。快速修复将是Wages.collection.countDocuments({"attendances": { "2019-08-26": "present"}}, ...rest of the code -
另外,搜索是区分大小写的,您必须在搜索中输入字符串的确切值。 > Wages.collection.countDocuments({"attendances": { "2019-08-26": "Present"}}
-
感谢您的回复。我现在刚刚尝试了您的解决方案
Wages.collection.countDocuments({"attendances": { "2019-08-26": "present"}},,但仍然得到“0”计数,即零 -
@A.Todkar,感谢您指出搜索的区分大小写的性质。我实际上在我的代码中使用了小写,但是,在将“present”更改为大写“Present”之后,它仍然返回零计数