我的场景:我需要在Mongo DB中加入以下2个表,条件是
testScenarioId(表1)= _id(表2)
表1:
{
"_id" : ObjectId("58516a6838fdb54d744ba070"),
"_class" : "com.TestResults",
"testScenarioId" : "581cef861892ad1eb7d124dd",
"runId" : 314,
"status" : "passed"
}
表2:
{
"_id" : ObjectId("57f41cb9319ed34079df8a2d"),
"environment" : "STAGE",
"component" : "platform",
"scenarioName" : "ABC-1234",
}
如果我加入相同的本地领域和外国领域而不是上述案例,我能够做到。
答案 0 :(得分:1)
Mongodb不支持$ lookup中的类型强制。因此,无法使用字符串类型的外部字段查找ObjectId类型的字段。
您需要做的是在保存testScenarioId时,您需要存储为objectId。
我尝试在聚合中使用$ type但不支持。所以目前这里无法直接在聚合管道中进行。
答案 1 :(得分:1)
如果要在2个集合中实现连接,那么您将以ObjectId形式插入“testScenarioId”。
那时,你有以字符串形式插入id和“查找”聚合不支持这种形式的Id。
ObjectId的原因:当查询从第一个表(表1)中找到Id时,它们将以ObjectId形式获取id,之后它们将id与第二个表参数“testScenarioId”进行比较,该参数以字符串形式存储,并且它们是将不匹配并查询返回空数据。