当前位置: 首页 > 知识库问答 >
问题:

如何在Mongo中执行Stringified id和ObjectId之间的$lookup?

冯宏放
2023-03-14

情景

我必须在两个名为college和Student的集合上执行join。我使用的是MongoDB3.4。在这里,college有一个名为StudentId的字段,它引用学生集合的_id。问题是,studentID已经以字符串化形式存储,而_id是objectID。

db.college.aggregate(
    {
        $lookup: {
           from: "student",
           localField: "studentId",
           foreignField: "_id",
           as: "Related"
        }
    })

共有1个答案

狄旻
2023-03-14

意图如下:

college(studentId)  --- > student (_id)
 string             ---->     ObjectId


we need to convert to ObjectId

    db.college.aggregate([
     {
 "$addFields": {
    "newStudentId" :  { "$toObjectId": "$studentId" }
       }
    },{
        $lookup: {
           from: "student",
           localField: "newStudentId",
           foreignField: "_id",
           as: "Related"
        }
    }])
 类似资料:
  • 问题内容: 这是我第一次在Java中使用Mongo,并且此聚合查询存在一些问题。我可以在Mongo for Spring中执行一些简单的查询,并在我的Repository接口中扩展注解。知道在Spring-Data中进行长时间聚合时采用哪种方法会很有帮助。 问题答案: 您可以实现AggregationOperation 并编写自定义聚合操作查询,然后用于执行您在mongo shell中执行的任何m

  • 这是我第一次在Java中使用Mongo,这个聚合查询有一些问题。我可以在我的存储库界面中使用注释在Mongo for Spring中进行一些简单的查询,这扩展了

  • 我在数据帧df1中有一组列(col1,col2,col3)我在数据帧df2中有另一组列(col4,col5,col6)假设这两个数据帧具有相同的行数。 如何生成在df1和df2之间进行成对关联的关联表? 桌子会像 我使用,它似乎没有根据需要生成表。 我在这里问了一个类似的问题:如何在具有不同列名的两个数据帧之间执行关联,但现在我处理的是分类列。 如果不能直接比较,是否有标准的方法使其具有可比性(如

  • 问题内容: 我想实现以下目标: 当我卷曲地址时,控制台出现异常,抱怨标头在发送后无法被打扰,这很公平。只是我不触摸响应对象。 调试NodeJS / Connect层我陷入了某种程度上暗示着,如果已经发送了报头,则执行路由处理程序必须初始化响应报头。 问题是上述行为是否是故意的(即,路由处理程序完成发送响应后执行任何代码是完全难以想象的,还是仅仅是连接中的错误? 问题答案: 不知道您是否找到解决方案

  • 我在Javascript中有以下示例,我似乎找不到Java中的等价物 我所拥有的(不会给出相同的结果)

  • 问题内容: 如何删除表格中行和列之间的多余空间。 我尝试过更改表格以及tr和td的边距,填充和各种边框属性。 我希望所有图片都紧挨着看起来像一张大图片。 我该如何解决? CSS HTML 问题答案: 将此CSS重置添加到您的CSS代码中: 它将有效地重置CSS,摆脱填充和边距。