mongoose discriminator查找查询

时间:2014-09-07 12:19:51

标签: node.js mongodb mongoose

我正在尝试使用"mongoose-schema-extend"

中描述的测试用例

一切正如那里解释的那样。

但是,我希望它能够让我能够对继承的类型进行搜索查询。 因此,如果我们考虑上面链接中显示的示例:

var VehicleSchema = mongoose.Schema({ 
  make : String,
}, { collection : 'vehicles', discriminatorKey : '_type' });

var CarSchema = VehicleSchema.extend({
  year : Number
});
var BusSchema = VehicleSchema.extend({
  route : Number
})

var Vehicle = mongoose.model('vehicle', VehicleSchema),
    Car = mongoose.model('car', CarSchema),
    Bus = mongoose.model('bus', BusSchema);

var accord = new Car({ 
  make : 'Honda',
  year : 1999
});
var muni = new Bus({
  make : 'Neoplan',
  route : 33
});

我希望Car.find({})只返回_type : Car的文档。相反,我得到所有vehicles

除了执行cars之外,还有办法只获取Car.find{"_type":"Car"})吗?

1 个答案:

答案 0 :(得分:1)

您可能必须向程序包所有者执行功能请求,或者自己对项目执行拉取请求。但是,解决方法可能是实现自定义查找方法:

CarSchema.statics._find = function(query, next) {
    query._type = 'Car';
    this.find(query, next);
}

Car._find({}, function(err, cars) {
    ... 
};

_find现在应该只返回Car对象。