Mongoose:查询ref文档数组中的字段,

Gui*_*meC 3 mongoose mongodb node.js

这是我的模特:

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'
    }
})
Run Code Online (Sandbox Code Playgroud)

我想从Location模型查询Event模型中的一个字段.

以下一个不起作用

findOne({events: {$elemMatch: {title: 'test'}}})
Run Code Online (Sandbox Code Playgroud)

我甚至不确定是否可以做到......

rob*_*lep 5

使用引用时,可以使用填充对引用的文档运行"子查询",以选择应包含哪些引用.

Location.find({ ... }).populate({
  path  : 'events',
  match : { title : 'test' }
}).exec(...);
Run Code Online (Sandbox Code Playgroud)

哪种方式(查询Location和填充Event,或其他方式)取决于您需要运行的确切查询.在模型上运行"主"查询会产生最少的结果是最高效的.

此方法仍将返回与主查询匹配的所有文档,并且您必须执行一些后处理以筛选没有任何匹配事件引用的文档.