如何在Mongo中组合两个以上的集合

时间:2016-05-07 12:08:56

标签: mongodb

我有两个以上的收藏品。每个集合都有与MySQL中的外键类似的字段。如何显示整个集合的数据。  我的例子集。

收集一:

     private Object _YourSelectedItem;
     public Object YourSelectedItem { get { return _YourSelectedItem; } set { YourSelectedItem = value); ComboBoxEditable = false;  } }

     private Boolean _ComboBoxEditable;
     public Boolean ComboBoxEditable { get { return _ComboBoxEditable; } set { _ComboBoxEditable = value); } }

收集二:

var mongoose = require('mongoose');

var mongoose = require('mongoose');

module.exports = mongoose.model('Addmodule',{

    chapterid: {type: mongoose.Schema.ObjectId, ref: 'Addchapter' },
    modul: String
});

收集三:

module.exports = mongoose.model('Addchapter',{

    subjectid: {type: mongoose.Schema.ObjectId, ref: 'Addsubject' },
    chapter: String
});

2 个答案:

答案 0 :(得分:2)

使用新版本的mongodb(3.2),您可以合并集合。请看一下$lookup聚合方法。您也可以查看此页面中的示例。如果您还有其他问题,请随时提出,因为您的问题过于笼统。

M = [1 2 2 1; 1 2 4 1; 1 4 2 1; 1 4 4 1; 1 2 2 2; 1 2 4 2; ...; 10 4 4 10] 

编辑1:

在这种情况下,您不需要使用{ $lookup: { from: <collection to join>, localField: <field from the input documents>, foreignField: <field from the documents of the "from" collection>, as: <output array field> } } 方法。您只需使用'$lookup'方法即可。像:

populate

或只是

Addmodule
  .find({})
  .populate({
    path: 'chapterid',
    populate: {
      path: 'subjectid',
      populate: { path: 'classid', model: 'Addclass' }
    }
  })
  .exec(function(err, data) {
    if (err) return handleError(err);
    res.json(data);
  });

因为我不建议使用查找,如果你不合并2数组集合(如sql中的左连接)。如果您想查看查找版本,我可以尝试添加一个示例。

答案 1 :(得分:0)

MongoDB不支持联接。 但是从版本3.2开始,他们通过汇总管道中的$ lookup运算符添加了对左外连接的支持。

有关$ lookup运算符的更多详细说明,请参阅以下url

中提到的文档

https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/