我使用mongoDB和nodejs我有4个集合集合1是教师,字段为teacher_id, teacher_namecollection 2是科目,字段为subject _id, subject_namecollection 3是书籍,字段为book_id, book_name。
集合是学生,其中有字段 -- _id, student_name, teacher_id, subject_id, book_id。
我怎样才能同时从1、2、3个集合中获取id,并插入到对应的id集合中呢?
我试过一些总是要求匹配的字段......有没有什么函数可以在没有匹配字段的情况下从集合中返回数据?
谁能帮助我?
那么,在这种情况下,你需要从这些集合中获取所有的文档。这将是一个有点昂贵的聚合,但我在这里添加代码。
首先,我在null上进行分组,以避免在教师集合中的每一个文档中附加查找值。
db.teacher.aggregate([
{
$group:{
"_id":null,
"root":{
$push:"$$ROOT"
}
}
},
{
$lookup:
{
from:"subject",
pipeline: [],
as: "subjectLookup"
}
},
{
$lookup:
{
from:"book",
pipeline: [],
as: "bookLookup"
}
},
{
$lookup:
{
from:"student",
pipeline: [],
as: "studentLookup"
}
}
]).pretty()
这些查找值将给出一个数组,这个数组中包含了各个集合中的所有文档,你可以通过添加 $match
的管道中的查找阶段。
希望这能解决你的问题:)