【问题标题】:Dot notation on nested objects not in Mongoose schema不在 Mongoose 模式中的嵌套对象上的点表示法
【发布时间】:2015-09-30 05:38:33
【问题描述】:

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

... , 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 架构中的嵌套对象上使用点表示法?

【问题讨论】:

  • 显示您希望匹配的文档。以及您实际使用的完整查询。这将比您在此处解释的尝试清楚得多。

标签: javascript node.js mongodb mongoose mongodb-query


【解决方案1】:

我猜你有这样的输入:

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

在什么情况下你使用:

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

然后:

db.users.find(query);

看啊!它有效。

这就是你在 JavaScript 中从变量名构造对象的方式。

【讨论】:

  • 括号 [] 表示法是您插入变量名和其他不适合 JavaScript 对象表示法的“文本”的方式。哦,完成后accept
猜你喜欢
  • 2019-12-21
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
  • 2020-04-22
  • 2017-07-06
相关资源
最近更新 更多