【问题标题】:Want from one collection based on another collection document array element想要从一个集合基于另一个集合文档数组元素
【发布时间】:2022-01-26 19:06:36
【问题描述】:

我被卡住了,需要帮助才能从另一个集合中获取另一个基于数组元素的数据。

我的收藏是--

programs.dbs -- 
{
 "_id": ObjectId("61c8f42ec63e700b415b4bed"),
"name": "Java",
"description": "this is a dummy information",
"instructor": ["61c8f6d7e690fc413a075e15", "61c8f6d7e690fc413a071e15", "61c8f0d7e690fc413a071e15"]
}

instructor.dbs --
{
 "_id": ObjectId("61c8f6d7e690fc413a075e15"),
"name": "Instrctor1",
"description": "this is a dummy Instructor",
},

{
 "_id": ObjectId("61c8f6d7e690fc413a071e15"),
"name": "Instrctor2",
"description": "this is a dummy Instructor",
},

{
 "_id": ObjectId("61c8f0d7e690fc413a071e15"),
"name": "Instrctor3",
"description": "this is a dummy Instructor",
}

我的查询是根据集合 A 讲师数组元素查找一位讲师信息。 我曾尝试使用此查询,但结果为空 -

    db.getCollection('programs.dbs').aggregate([{$lookup:{from:'instructor.dbs',localField:'instructor',foreignField:"_id",as:'instructors'}}])

即时帮助将是巨大的。

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    如果您使用的是猫鼬,那么populate 方法可能会起作用。

    【讨论】:

    • 我已经直接在 mongodb 中检查了这个查询并得到空结果
    【解决方案2】:

    您的讲师数组不应将 ID 引用为字符串,而应引用为 ObjectId(...)

    所以你需要:

    "instructor": [ObjectId("61c8f6d7e690fc413a075e15"), ObjectId("61c8f6d7e690fc413a071e15"), ObjectId("61c8f0d7e690fc413a071e15")]
    

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 2015-01-18
      • 2015-07-21
      • 1970-01-01
      • 2021-12-04
      • 2011-05-23
      • 2021-12-08
      • 2021-04-16
      • 1970-01-01
      相关资源
      最近更新 更多