【问题标题】:Find by property按属性查找
【发布时间】:2018-05-04 18:23:58
【问题描述】:

我已经定义了一个 moogoose 架构如下:

var UserSchema = new mongoose.Schema({
    google: Object,
    github: Object,
    linkedin: Object,
    facebook: Object,
    microsoft: Object,
    twitter: Object
});

所有这些属性都应该包含一个子属性id。所以给定loginSuccessfully发送的profile,我想找到id(根据profile.provider)匹配profile.id的文档。

但是,传统的.find({ "...": profile.id }, (err, users) => ... ) 无法表达profile.provider 的这种动态情况。

有人知道如何编写这个猫鼬查询吗?

【问题讨论】:

    标签: javascript mongodb mongoose passport.js


    【解决方案1】:

    如果您尝试在所有提供商中查找 id,您可以使用$or

    .find(
        { $or: ["google", "github", "linkedin", "facebook", "microsoft", "twitter"].map(p=>({[p + ".id"]: profile.id})) }, 
        (err, users) => ... 
    )
    

    对于单个已知的提供者,它是传统的

    .find(
        { [provider + ".id"]: profile.id }, 
        (err, users) => ... 
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-05
      • 1970-01-01
      • 2021-09-27
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多