2017-05-10 67 views
0

我的方案:我需要下面蒙戈DB表和條件加入2是加入2代蒙戈DB表通過ID和的ObjectId

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", 

} 

我能夠做的,如果我與同一本地外地和外國字段b加盟並非如此。

+1

這是不可能的。 https://jira.mongodb.org/browse/SERVER-22781 – Veeram

回答

1

Mongodb不支持$ lookup中的類型強制轉換。所以ObjectId類型的字段不能用字符串類型的外地字段查找。

您需要做的是在保存testScenarioId時,您需要將其存儲爲objectId。

我試過在聚合中使用$ type,但不支持它。所以目前這裏沒有辦法直接在聚合管道中進行。

1

如果要在2個集合中實現連接,那麼您將在ObjectId窗體中插入「testScenarioId」。

那時候,你已經在字符串形式插入id和「lookup」聚合不支持這種形式的Id。

爲什麼ObjectId的原因:當查詢從第一個表(表1)中找到Id時,它們將以ObjectId形式獲取id,然後他們將id與第二個表格參數「testScenarioId」進行比較,他們不會匹配並查詢返回空數據。