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 に答える