使用$或在FindOne查询中 - MongoDB

时间:2016-04-02 22:53:14

标签: node.js mongodb mongoose

更新:将if(!result.length)更改为if(!result),因为我使用的是.findOne,而且这似乎工作到目前为止。如果您发现在代码片段中可以改进的其他任何内容都很棒!

刚开始学习Node JS和MongoDB(使用Mongoose),请原谅我,如果我完全脱离了上下文。

我试图使用以下查询在MongoDB中找到一行:

exports.findById = function(req, res) {
        var id = req.params.id;
        Team.findOne({'teamid':id, $or:[{'creator':req.user.id}, {userlist: { $in : [req.user.id]}}]}, function(err, result) {
            if (err) console.log(err);
            if (!result.length)
                res.redirect('/');
            else
                res.render('team', { team : result.teamid });
        });
};

我想要检索字段teamid等于id的行,以及检查字段creator是否等于req.user.idreq.user.id 1}}位于userlist字段中。我期待上述查询中只有一个结果。

请注意,此查询工作正常,但我只需要查看userlist数组:

Team.findOne({'teamid':id, 'creator':req.user.id}, function(err, result) {...

最后是团队架构

var Team = new Schema({
        team_name: { type: String, required: true, trim: true},
        teamid: { type: String },
        creator: String,
        created_at: Date,
        userlist: Array
});

非常感谢任何有助于弄清楚问题是什么的帮助!

0 个答案:

没有答案