2017-04-12 45 views
0

我有兩個集合,一個具有_id和UserId,另一個具有UserId(相同的唯一標識符)和「其他數據」。MongoDB查詢,使用光標過濾

我想根據前集合中的_id列表過濾後一個集合。

有人可以提供這種情況下的示例查詢嗎?

回答

0

在MongoDB中「加入」集合的唯一方法是集合階段$lookup(在版本3.2中可用)。

firstCollection.aggregate([ 
    { $match: { _id: {$in: [1,2,3] }}}, // filter by _ids 
    { 
    $lookup: 
    { 
     from: "secondCollection", 
     localField: "UserId", 
     foreignField: "UserId", 
     as: "data" 
    } 
    } 
]) 

這會將「數據」字段添加到來自第一個集合的文檔中,該集合將包含來自第二個集合的所有相關文檔。如果關係不是1:1,則可以添加$unwind階段來平展結果:

{$unwind: "$data"} 
+0

如果我使用的是版本2.6.9,有什麼可以做的嗎? –

+0

@AlexWu沒有在數據庫端。您只能執行兩個查詢 - 首先通過_ids獲取UsesrIds。第二,通過UserIds獲取數據 –