如何通过使用mongoose的子文档引用找到?

时间:2012-09-21 11:24:06

标签: mongoose

我正在尝试搜索ObjectId引用的子文档的内容,如下所示:

Model.Idea.findOne('_key.code':code).populate('_key').exec (err,idea) ->
  return done err if err
  should.exist idea

架构如下所示:

Key = new mongoose.Schema(
  type:
    type: String
    enum: types
    index: true
  code:
    type: String
    index:
      unique: true
)
Model.Key = ...

Idea = new mongoose.Schema(
  text: String
  name: String
  _key:
    type: mongoose.Schema.Types.ObjectId
    ref: 'Key'
)
Model.Idea = ...

我这样做的原因是我希望在各种密钥类型之前预先分配一堆密钥,然后根据需要分配它们。

出于某种原因,我认为这是可能的,但查询似乎没有返回任何结果。有没有办法在不先查找密钥然后引用Id的情况下执行此操作?我想我可能已经从嵌入式子文档中得到了这样的印象,但是......

2 个答案:

答案 0 :(得分:0)

不。您的Idea.findOne查询选择器无法引用_key中的属性,因为直到主查询完成后才会出现其填充。

答案 1 :(得分:0)

尝试

Model.Idea.findOne()
.populate('_key', null, {'code':code})
.exec (err,idea) ->
  return done err if err
  should.exist idea