猫鼬:在对象数组中按字段和字段查找文档

时间:2016-10-14 14:29:16

标签: node.js mongodb mongoose

我正在创建一份包含以下架构的调查问卷:

var questionnaireSchema = new Schema({
    user_id : String,
    start_date : Date,
    end_date : Date,
    questions : [{
        question_id : {type: Number},
        answer_id : {type: Number},
        answer_string : String
    }]
});

我需要找到user_id设置的答案,然后查看该用户是否已经回答了该问题。

我有以下查询:

Questionnaire.findOne({'user_id': req.body.uid}, function (err, user) {
        if (err) {
            throw err;
        }
        if (user) {

            Questionnaire.findOne({
                'uid': req.body.uid,
                'questions.question_id': req.body.question_id

            }, function (err, question) {
                if (question) {
                    console.log('Found a question - updating');
                } else {
                    console.log('No question found - adding');
                }
            });
        }
    });

查询找到用户,但是,当我尝试一起查找用户和question.answer_id时,查询永远找不到任何内容。

我不确定如何编写此查询或在哪里查看。

谢谢

1 个答案:

答案 0 :(得分:1)

question_id是架构中的数字。 req.body.question_id的类型是什么? 根据请求content-type,它可能是一个字符串,因此第二个查询无法匹配任何内容。