首页 文章

嵌套对象上的点表示法不在Mongoose模式中

提问于
浏览
1

我有一个带有providerData对象的mongoose模式:

... , providerData: {}, ...

我想根据 providerData 对象中的对象ID查询文档 .

所以我假设我必须像这样使用点符号:

User.findOne({ providerIDString: providerID }, function(err, user) {...});

哪里

providerIDString is a string like 'providerData.facebook.id'
    providerID is the providerData.facebook id

但是,即使查询仍然没有返回结果

db.users.find({"providerData.facebook.id":"THEFACEBOOKID"})

在mongodb shell中返回正确的文档

我是否正确地假设这种情况正在发生,因为 providerData.facebookproviderData.facebook.id 未在用户模式中定义?

这是否意味着我必须将它们添加到模式中,或者有没有办法在不在mongoose模式中的嵌套对象上使用点表示法?

1 回答

  • 5

    我猜你有这样的输入:

    var providerIdString = 'providerData.facebook.id',
        facebookId = "THEFACEBOOKID";
    

    在这种情况下你使用:

    var query = {};
    query[provoderIdString] = facebookId;
    

    然后:

    db.users.find(query);
    

    不料!有用 .

    这就是你如何用JavaScript中的变量名构造对象 .

相关问题