我有两个以上的收藏品。每个集合都有与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
});
答案 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/