MongoDB Query获取特定的数组元素

时间:2016-10-06 15:28:12

标签: arrays mongodb mongodb-query

我是MongoDB查询的新手。我已经阅读了一些MongoDB书籍,但无法找到查询文档以检查密钥值的方法。例如,

文件是:

{
"_id" : ObjectId("57efaec42e656319d2a2860b"),
"Name" : {
    "First" : "Peter",
    "Last" : "John"
},
"Math" : {
    "SA1" : 10,
    "FA1" : 22,
    "Grade" : "A",
},
"English" : {
    "SA1" : 15,
    "FA1" : 25,
    "Grade" : "A-",
},
"Science" : {
    "SA1" : 18,
    "FA1" : 28,
    "Grade" : "A+",
},
"Subjects" : [ "English", "Math", "Science" ]
}

我想查询:主题等级[0] ==“A”?它应该返回TRUE / FALSE。因此,必须首先从主题数组中找出主题的名称,然后使用该名称来比较该主题中的成绩。

1 个答案:

答案 0 :(得分:0)

这个逻辑必须用查询MongoDB的语言编写。在SQL中,我们可能会编写一个涉及子查询的语句。但是在MongoDB中,建议编写两个单独的查询来实现结果。

JavaScript中的示例函数:

function checkIfStudentHasAGrade(){

var student = db.collection.findOne("_id":"<input _id>"); 

if(null != student){
var subject = student.subject[0];

if(student.subject.Grade == "A")
    return true;
else
    return false;
}