是否可以一次搜索多个Mongoose模型?

时间:2013-10-01 08:49:09

标签: node.js mongodb mongoose

我有四个Mongoose模型,SoleTraderPartnershipCompanyTrust。它们不同,我不能将它们全部合并到一个模式中,但又足够相似,我经常需要一次查询或更改所有4种类型,而且很少关注它们的类型。

有没有办法做到这一点 - 可能将所有四种类型放在一个集合中 - 而不是每次都进行四次数据库调用?

1 个答案:

答案 0 :(得分:3)

由于您正在使用mongoose-schema-extend,因此您似乎可以创建一个简单的基础'架构并扩展您的其他架构。如果要搜索所有这些内容,请使用基本模型。

例如:

// base schema
var PersonSchema = new Schema({
  name : String
}, { 
  collection       : 'users', // everything will get saved in the same collection
  discriminatorKey : '_type' 
});

// two schema's that extend off it
var EmployeeSchema = PersonSchema.extend({ department : String });
var EmployerSchema = PersonSchema.extend({});

// materialize all three into models
var Person    = mongoose.model('Person',   PersonSchema);
var Employee  = mongoose.model('Employee', EmployeeSchema);
var Employer  = mongoose.model('Employer', EmployerSchema);

...

// create some people
new Employee({
  name       : 'Homer Simpson',
  department : 'Safety'
}).save(...);

new Employer({
  name : 'Charles Montgomery Burns',
}).save(...);

...

// search across employers and employees
Person.find({ ... }, function(err, people) {
  ...
});

但是,我必须说find() {{1}}根据鉴别键返回正确的模型实例并不适合我。