MongoDB findOne多个查询字段?

时间:2016-01-14 10:38:46

标签: node.js mongodb koa

糟糕的方式(直接工作):

Database.ChangeTracker.QueryTrackingBehavior = Microsoft.Data.Entity.QueryTrackingBehavior.NoTracking;

我想要这样的事情:

user =
    yield users.findOne({
        'profile.personal.email': email
    });
if(user === null) {
    user =
        yield users.findOne({
            'profile.company.email': email
        });
}

以上返回null。我想要求上面两个字段中的任何一个的第一场比赛。我非常确定mongodb可以做到这一点。我希望不是。因此,如果找到任何一封电子邮件,它应该返回文档。

我使用Koajs和co-monk模块。如果需要,我可以使用聚合。

1 个答案:

答案 0 :(得分:1)

记住$or运营商:

user =
    yield users.findOne({
        $or: [{
            'profile.personal.email': email
        }, {
            'profile.company.email': email
        }]
    });