Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用mongodb聚合框架填充字段_Mongodb - Fatal编程技术网

使用mongodb聚合框架填充字段

使用mongodb聚合框架填充字段,mongodb,Mongodb,我试图使用mongoDB的聚合框架在nodejs/mongoose项目中构建查询,但我无法让$lookup工作 我有两个集合,一个项目模式: const projectSchema = new Schema({ ... contact: { type: Schema.Types.ObjectId, ref: 'Contact', required: true, }, ... export default mongoose.model('Project',

我试图使用mongoDB的聚合框架在nodejs/mongoose项目中构建查询,但我无法让
$lookup
工作

我有两个集合,一个项目模式:

const projectSchema = new Schema({
  ...
  contact: {
    type: Schema.Types.ObjectId,
    ref: 'Contact',
    required: true,
  },
  ...
export default mongoose.model('Project', projectSchema);
const contactSchema = new Schema({
  ...
  some fields
  ...
export default mongoose.model('Contact', contactSchema);
和联系人模式:

const projectSchema = new Schema({
  ...
  contact: {
    type: Schema.Types.ObjectId,
    ref: 'Contact',
    required: true,
  },
  ...
export default mongoose.model('Project', projectSchema);
const contactSchema = new Schema({
  ...
  some fields
  ...
export default mongoose.model('Contact', contactSchema);
project.contact
中,我存储联系人文档的
\u id
。 执行此操作时,我可以使用联系人数据填充项目,例如:

Project.find().populate('contact')
但是,当我使用如下聚合构建查询时,我只得到一个空数组,用于
contactData

const history = await Project.aggregate([
  {
    $lookup: {
      from: 'Contact',
      localField: 'contact',
      foreignField: '_id',
      as: 'contactData',
    },
  },
]);
我希望能够访问整个联系人文档以进行进一步处理,但不希望将整个联系人文档存储在项目集合中


这不应该起作用吗,或者我在这里遗漏了什么…?

来自:“联系人”,
@AlexBlex:我以前试过,但没有运气。中的
值是联系人集合的名称,而不是型号名称。它应该是
联系人
。因此,您可以从“联系人”中尝试
,看看它是否有用。@Veeram:没错,它必须是集合的名称,而不是模型的名称!所以是
联系人
。谢谢你!