0

我正在尝试搜索 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 的情况下做到这一点?我想我可能有这样的印象,你可以从嵌入的子文档中做到这一点......

4

2 回答 2

0

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

于 2012-09-21T12:38:34.180 回答
0

尝试

Model.Idea.findOne()
.populate('_key', null, {'code':code})
.exec (err,idea) ->
  return done err if err
  should.exist idea
于 2012-09-21T20:00:06.450 回答