我正在尝试搜索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的情况下执行此操作?我想我可能已经从嵌入式子文档中得到了这样的印象,但是......
答案 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