Mongoose:查询ref文件数组上的字段,

这里是我的模特:

var LocationSchema = new Schema( { events: [ { type: mongoose.Schema.Types.ObjectId, ref: 'Event' } ] }) var EventSchema = new Schema( { title : String, location: { type: mongoose.Schema.Types.ObjectId, ref: 'Location' } }) 

我想从位置模型查询事件模型中的一个字段。

以下一个不起作用

 findOne({events: {$elemMatch: {title: 'test'}}}) 

我不确定这是否有可能使…

当您使用引用时,您可以使用填充在引用的文档上运行“子查询”来select应该包含哪些引用。

 Location.find({ ... }).populate({ path : 'events', match : { title : 'test' } }).exec(...); 

(查询Location和填充Event ,或其他方式)取决于您需要运行的确切查询。 在模型上运行“主要”查询将会产生最less的结果,这是最高效的。

该方法仍将返回与主查询匹配的所有文档,并且必须执行一些后处理来过滤没有任何匹配的事件引用的文档。