【问题标题】:Mongoose: Running a second query on the returned documentsMongoose:对返回的文档运行第二个查询
【发布时间】:2011-12-16 16:30:32
【问题描述】:

问题:

我有一个“组”集合。每个组都有一个嵌入的“成员”文档。我需要通过他们的“会员 ID”提取特定会员,并从“用户”集合中获取他们的所有详细信息。我想使用 '.populate()' 方法执行此操作,但只需要填充单个成员的记录,而不是所有成员记录。

所以我的查询看起来像这样:

DB.model('groups')
.findById(groupID)
.populate('members._user')
.run(function(err, group){

    // then loop over every member and return the one that matches 
    // the member id we require

});

考虑到我只需要组中一个成员的用户详细信息,这似乎是一种非常低效的做事方式!我只有 memberID 而不是 userID,所以这就是我要去成员集合的原因。

如何从嵌入的“成员”文档中提取单个成员并填充它?

【问题讨论】:

  • 您的group 中的members 字段是文档还是文档数组?
  • 嵌入文档数组

标签: node.js mongodb mongoose nosql


【解决方案1】:

populate 函数有 3 个参数:pathfieldsconditionsfieldsconditions 在通过单独调用 model.find(...) 填充引用的文档时应用。尝试将有效的 mongodb 条件传递给 populate,该条件只会返回您感兴趣的成员。

【讨论】:

  • 有趣啊!你如何陈述条件?我在哪里可以找到这方面的文档?
  • 我翻遍了mongoose的源码,找到了populate的参数,看看内部是怎么使用的。
猜你喜欢
  • 2021-02-16
  • 2020-01-20
  • 1970-01-01
  • 2017-05-27
  • 2023-04-06
  • 2015-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多