猫鼬填充倍数ID

Mongoose populate multiples ids

我有这些模式

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);

我有这些driver组:

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

和这个driver:

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

如何按人口获得分组?我正在使用这个:

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

但不能正常工作。

如果您想以这种方式填充它们,那么您存储 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