2017-04-12 66 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获取数据 –