如何通过mongoose虚拟字段查找MongoDB文档?

时间:2016-03-02 15:22:05

标签: node.js mongodb mongoose virtual

如何使用' findOne' /'找到' mongoose的功能,我可以找到一个特定的文档,其中的结果是通过虚拟字段过滤的,该字段在物理上不会出现在数据库中吗?

我会尝试进一步解释:

在我的用户'模型,我有一个名为' email'的字段。我想为'电子邮件'创建一个别名。 as' userkey'我的nodejs应用程序中的其他功能(主要是登录验证和东西)。

要创建别名,我这样做了:

userSchema.virtual('userkey').get(function()
{
    return this.email;
});

现在,在我创建了别名之后,我想以下列方式过滤搜索结果:

restApi.post('/login', function (req, res)  // (using expressjs)
{
    User.findOne({'userkey': req.body.userkey}).exec(..);
}

如何有效地执行此操作,而无需创建任何更多方法\字段等以节省时间和内存?

别名非常重要,因为在应用程序的未来,我会添加更多登录方式,并且我希望能够在字段之间快速切换以与“用户密钥”相关联。 。这个别名省去了更改整个应用程序的麻烦(这是一个巨大的编程原则),可以帮助我添加更多将来需要的逻辑。

1 个答案:

答案 0 :(得分:1)

你不能。

mongodb中存储的文档中不存在虚拟内容,因此无需查询。