mongodb 查找不接受转换的objectId作为foreignField

6ss1mwsb  于 2022-12-18  发布在  Go
关注(0)|答案(1)|浏览(104)

我正在尝试根据集合的objectId进行查找。
它似乎不接受它的对象Id,因为它需要是String类型,但即使在转换后它也不工作。有没有办法与Id建立关系?




[
  {
    '$match': {
      'student': 'something'
    }
  }, {
    '$lookup': {
      'from': 'classrooms', 
      'localField': 'classroom', <----- The same ID as below but already String type
      'foreignField': {
        '$toString': '$_id' <------ This here is the ID that I'm trying to relate to 
      }, 
      'as': 'result'
    }
  }
]
7cwmlq89

7cwmlq891#

尝试以下两个建议之一:

1.这一个,转换发生在前一个阶段:

[
  {
    '$match': {
      'student': 'something'
    }
  },
  {
    '$toString': '$_id'
  },
  {
    '$lookup': {
      'from': 'classrooms', 
      'localField': 'classroom',
      'foreignField': '_id', 
      'as': 'result'
    }
  }
]

1.如果它不起作用,试试这个:

[
  {
    $match: {
      'student': 'something'
    }
  },
   $addFields: {
      convertedId: { $toString: "$_id" }
   }
  {
    $lookup: {
      'from': 'classrooms', 
      'localField': 'classroom',
      'foreignField': 'convertedId', 
      'as': 'result'
    }
  }
]

在所有情况下,都不应在查找阶段进行转换;在一个专门的舞台上表演。

相关问题