猫鼬发现与对象的属性完全匹配 100%
Mongoose find exactly match 100% with properties of object
我目前正在为我的项目使用 mongoose,我使用 mongoose find 来查询与我在对象中定义的内容 100% 完全匹配的文档。这是我的路由器定义:
router.get('/warned-students/:classname/:schoolYear/:semester', get_warned_students)
这是我输入的link:
http://localhost:5000/students/warned-students/k61caclc1/2016/1
如你所见,它收到了 3 个参数类名、学年和学期。 classname 是 k61clc1,choolYear 是 2016,semester 是 1.
这是我的控制器
const Student = require('../models/student')
exports.get_warned_students = (req, res, next) => {
const { classname, schoolYear, semester } = req.params
Student.find({
classname,
'accademicTrainningList.schoolYear': schoolYear,
'accademicTrainningList.semester': semester,
'accademicTrainningList.classification': 'Weak'
})
.exec()
.then(students => {
res.status(200).json({ size: students.length, students })
})
.catch(err => {
console.log('error in finding warned students')
res.status(500).json({ err })
})
}
它起作用了,但不是 return 我所期望的:
{
"size": 14,
"students": [
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e1b",
"fullname": "Trịnh Phan Anh ",
"birthday": "19/09/1997 ",
"classname": "k61caclc1",
"code": "16020508",
"vnumail": "16020508@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9dc0",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6fea9",
"score": 53,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e1e",
"fullname": "Đinh Việt Cường ",
"birthday": "13/03/1996 ",
"classname": "k61caclc1",
"code": "16022255",
"vnumail": "16022255@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9dc3",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6feac",
"score": 56,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e23",
"fullname": "Phạm Duy ",
"birthday": "17/12/1998 ",
"classname": "k61caclc1",
"code": "16020542",
"vnumail": "16020542@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Excellent",
"_id": "5f603a126d633e75884e9dc8",
"score": 90,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6feb1",
"score": 56,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e26",
"fullname": "Đặng Ngọc Đam ",
"birthday": "26/11/1998 ",
"classname": "k61caclc1",
"code": "16020518",
"vnumail": "16020518@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9dcb",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6feb4",
"score": 55,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e28",
"fullname": "Nguyễn Hải Đăng ",
"birthday": "09/08/1998 ",
"classname": "k61caclc1",
"code": "16020520",
"vnumail": "16020520@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9dcd",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6feb6",
"score": 56,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e29",
"fullname": "Nguyễn Hải Đăng ",
"birthday": "24/11/1998 ",
"classname": "k61caclc1",
"code": "16020519",
"vnumail": "16020519@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Excellent",
"_id": "5f603a126d633e75884e9dce",
"score": 90,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6feb7",
"score": 54,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e2b",
"fullname": "Đỗ Hồng Giang ",
"birthday": "29/01/1997 ",
"classname": "k61caclc1",
"code": "16020544",
"vnumail": "16020544@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9dd0",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6feb9",
"score": 57,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e36",
"fullname": "Phạm Minh Hiếu ",
"birthday": "17/10/1998 ",
"classname": "k61caclc1",
"code": "16020373",
"vnumail": "16020373@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9ddb",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6fec4",
"score": 55,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e38",
"fullname": "Nguyễn Ngọc Hòa ",
"birthday": "29/04/1997 ",
"classname": "k61caclc1",
"code": "16020566",
"vnumail": "16020566@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9ddd",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6fec6",
"score": 57,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e3b",
"fullname": "Trần Hữu Hoàn ",
"birthday": "25/11/1998 ",
"classname": "k61caclc1",
"code": "16022471",
"vnumail": "16022471@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9de0",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6fec9",
"score": 59,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e3e",
"fullname": "Nguyễn Tấn Hoàng ",
"birthday": "06/01/1998 ",
"classname": "k61caclc1",
"code": "16022261",
"vnumail": "16022261@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9de3",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6fecc",
"score": 50,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e47",
"fullname": "Nguyễn Trung Kiên ",
"birthday": "18/09/1998 ",
"classname": "k61caclc1",
"code": "16020588",
"vnumail": "16020588@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Intermediate",
"_id": "5f603a126d633e75884e9dec",
"score": 75,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6fed5",
"score": 55,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e52",
"fullname": "Nguyễn Văn Mạnh ",
"birthday": "07/07/1998 ",
"classname": "k61caclc1",
"code": "16020606",
"vnumail": "16020606@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9df7",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6fee0",
"score": 59,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e60",
"fullname": "Tạ Văn Quỳnh ",
"birthday": "06/12/1998 ",
"classname": "k61caclc1",
"code": "16020637",
"vnumail": "16020637@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9e05",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6feee",
"score": 59,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
}
]
}
如您所见,returns 结果包含 3 个属性中的 1 个,但我想要的是 returns 仅包含所有 3 个属性的结果。谢谢你帮助我,祝你有美好的一天
更新:
这是我所期望的:数组“accademicTrainningList”包含一个适合所有 3 属性 学年:2016,学期:1 和分类:弱
的元素
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e1b",
"fullname": "Trịnh Phan Anh ",
"birthday": "19/09/1997 ",
"classname": "k61caclc1",
"code": "16020508",
"vnumail": "16020508@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Weak",
"_id": "5f603a126d633e75884e9dc0",
"score": 53,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Good",
"_id": "5f603b1f3bd07d5cb4d6fea9",
"score": 80,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
否则,如果没有匹配项 return 一个空数组
看来 $elemMatch 正是您所需要的。在您的情况下,查询将类似于:
Student.find({
classname: "k61caclc1",
accademicTrainningList: {
$elemMatch: {
semester: "1",
schoolYear: "2016",
classification: "Weak"
}
}
})
我目前正在为我的项目使用 mongoose,我使用 mongoose find 来查询与我在对象中定义的内容 100% 完全匹配的文档。这是我的路由器定义:
router.get('/warned-students/:classname/:schoolYear/:semester', get_warned_students)
这是我输入的link:
http://localhost:5000/students/warned-students/k61caclc1/2016/1
如你所见,它收到了 3 个参数类名、学年和学期。 classname 是 k61clc1,choolYear 是 2016,semester 是 1.
这是我的控制器
const Student = require('../models/student')
exports.get_warned_students = (req, res, next) => {
const { classname, schoolYear, semester } = req.params
Student.find({
classname,
'accademicTrainningList.schoolYear': schoolYear,
'accademicTrainningList.semester': semester,
'accademicTrainningList.classification': 'Weak'
})
.exec()
.then(students => {
res.status(200).json({ size: students.length, students })
})
.catch(err => {
console.log('error in finding warned students')
res.status(500).json({ err })
})
}
它起作用了,但不是 return 我所期望的:
{
"size": 14,
"students": [
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e1b",
"fullname": "Trịnh Phan Anh ",
"birthday": "19/09/1997 ",
"classname": "k61caclc1",
"code": "16020508",
"vnumail": "16020508@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9dc0",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6fea9",
"score": 53,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e1e",
"fullname": "Đinh Việt Cường ",
"birthday": "13/03/1996 ",
"classname": "k61caclc1",
"code": "16022255",
"vnumail": "16022255@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9dc3",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6feac",
"score": 56,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e23",
"fullname": "Phạm Duy ",
"birthday": "17/12/1998 ",
"classname": "k61caclc1",
"code": "16020542",
"vnumail": "16020542@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Excellent",
"_id": "5f603a126d633e75884e9dc8",
"score": 90,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6feb1",
"score": 56,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e26",
"fullname": "Đặng Ngọc Đam ",
"birthday": "26/11/1998 ",
"classname": "k61caclc1",
"code": "16020518",
"vnumail": "16020518@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9dcb",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6feb4",
"score": 55,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e28",
"fullname": "Nguyễn Hải Đăng ",
"birthday": "09/08/1998 ",
"classname": "k61caclc1",
"code": "16020520",
"vnumail": "16020520@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9dcd",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6feb6",
"score": 56,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e29",
"fullname": "Nguyễn Hải Đăng ",
"birthday": "24/11/1998 ",
"classname": "k61caclc1",
"code": "16020519",
"vnumail": "16020519@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Excellent",
"_id": "5f603a126d633e75884e9dce",
"score": 90,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6feb7",
"score": 54,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e2b",
"fullname": "Đỗ Hồng Giang ",
"birthday": "29/01/1997 ",
"classname": "k61caclc1",
"code": "16020544",
"vnumail": "16020544@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9dd0",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6feb9",
"score": 57,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e36",
"fullname": "Phạm Minh Hiếu ",
"birthday": "17/10/1998 ",
"classname": "k61caclc1",
"code": "16020373",
"vnumail": "16020373@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9ddb",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6fec4",
"score": 55,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e38",
"fullname": "Nguyễn Ngọc Hòa ",
"birthday": "29/04/1997 ",
"classname": "k61caclc1",
"code": "16020566",
"vnumail": "16020566@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9ddd",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6fec6",
"score": 57,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e3b",
"fullname": "Trần Hữu Hoàn ",
"birthday": "25/11/1998 ",
"classname": "k61caclc1",
"code": "16022471",
"vnumail": "16022471@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9de0",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6fec9",
"score": 59,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e3e",
"fullname": "Nguyễn Tấn Hoàng ",
"birthday": "06/01/1998 ",
"classname": "k61caclc1",
"code": "16022261",
"vnumail": "16022261@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9de3",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6fecc",
"score": 50,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e47",
"fullname": "Nguyễn Trung Kiên ",
"birthday": "18/09/1998 ",
"classname": "k61caclc1",
"code": "16020588",
"vnumail": "16020588@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Intermediate",
"_id": "5f603a126d633e75884e9dec",
"score": 75,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6fed5",
"score": 55,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e52",
"fullname": "Nguyễn Văn Mạnh ",
"birthday": "07/07/1998 ",
"classname": "k61caclc1",
"code": "16020606",
"vnumail": "16020606@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9df7",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6fee0",
"score": 59,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e60",
"fullname": "Tạ Văn Quỳnh ",
"birthday": "06/12/1998 ",
"classname": "k61caclc1",
"code": "16020637",
"vnumail": "16020637@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Good",
"_id": "5f603a126d633e75884e9e05",
"score": 80,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Weak",
"_id": "5f603b1f3bd07d5cb4d6feee",
"score": 59,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
}
]
}
如您所见,returns 结果包含 3 个属性中的 1 个,但我想要的是 returns 仅包含所有 3 个属性的结果。谢谢你帮助我,祝你有美好的一天 更新:
这是我所期望的:数组“accademicTrainningList”包含一个适合所有 3 属性 学年:2016,学期:1 和分类:弱
的元素{
"gender": "No Record",
"profileImage": "https://kittyinpink.co.uk/wp-content/uploads/2016/12/facebook-default-photo-male_1-1.jpg",
"_id": "5f603a126d633e75884e9e1b",
"fullname": "Trịnh Phan Anh ",
"birthday": "19/09/1997 ",
"classname": "k61caclc1",
"code": "16020508",
"vnumail": "16020508@vnu.edu.vn",
"accademicTrainningList": [
{
"semester": "1",
"classification": "Weak",
"_id": "5f603a126d633e75884e9dc0",
"score": 53,
"schoolYear": "2016"
},
{
"semester": "2",
"classification": "Good",
"_id": "5f603b1f3bd07d5cb4d6fea9",
"score": 80,
"schoolYear": "2016"
}
],
"scoreList": [],
"receiveScholarship": [],
"prizeList": [],
"scienceContestPrizeList": [],
"wentAbroad": [],
"tookTheTest": [],
"punishList": [],
"__v": 0
},
否则,如果没有匹配项 return 一个空数组
看来 $elemMatch 正是您所需要的。在您的情况下,查询将类似于:
Student.find({
classname: "k61caclc1",
accademicTrainningList: {
$elemMatch: {
semester: "1",
schoolYear: "2016",
classification: "Weak"
}
}
})