0

我有这些模式

var DriverSchema = Schema({
  name: String,
  groups: {
     type: String,
     ref: 'DriverGroup'
  }
});


var DriverGroupSchema = Schema({
  name: String
});

module.exports = mongoose.model('DriverGroup', DriverGroupSchema);
module.exports = mongoose.model('Driver', DriverSchema);

我有这些驱动程序组:

[{
  id: '12345',
  name: 'Group1'
}, {
  id: '6789',
  name: 'Group2'
}]

和这个司机:

{
  name: 'Driver1',
  groups: '12345,6789'
}

我怎样才能按人口获得群体?我正在使用这个:

Driver.find().sort('name').populate('groups')

但不能正常工作。

4

1 回答 1

1

groups如果您想以这种方式填充它们,那么您的存储不正确。
populate无法解析字符串以确定单独的实体。

它应该是一个数组

groups: '12345,6789'

应该

groups: ['12345,6789']

此外,通过查找 _ids(不是名称字段)来填充作品

因此,将需要更改您的架构:

var DriverSchema = Schema({
  name: String,
  groups: [{ type: string, ref: 'DriverGroup' }]
});

您还需要设置_id(设置_id为与name您的情况相同)

var DriverGroupSchema = Schema({
  _id: String,
  name: String
});

http://mongoosejs.com/docs/populate.html

于 2017-05-12T13:48:39.613 回答