过滤meteorjs中的嵌套文档

时间:2016-02-18 17:15:12

标签: javascript mongodb meteor

我在尝试过滤Meteor中的嵌套文档时遇到了一些麻烦,我不想使用MongoDB Aggregation来展开我的文档。

我的用户文档

的示例
{
   Publications:[{ 
       type:1
   },{ 
       type:2
   }]
}

当我发现只获得类型1时,我得到了预期的结果 - 它们只返回具有类型1发布的用户文档,但它们也返回类型为2的发布,因为它们在发布中该用户的数组。

我可以在结果中循环以在发布之前手动删除这些出版物,但我不认为这是正确的方法。

有人可以帮我指导一个更好的解决方案吗?

Edited

肖恩的答案很好但不是正确的,投影不适用于流星。这项工作在robomongo上,但在项目中仍然返回用户的2种出版物类型。

1 个答案:

答案 0 :(得分:1)

给这个查询一个镜头。

Meteor.users.find(
    { 'Publications.type': 1 },
    { fields: { 'Publications.$': 1 } }
);

这应该可以找到类型为1的发布的用户,并且只会在输出中包含那些匹配的发布。您可以在输出中包含其他字段,也可以将其包含在projection parameter中(例如{ 'Publications.$': 1, profile: 1 })。

但有一点需要注意。我认为使用{ 'Publications.$': 1 }投影的查询只能在服务器端完成。客户端上使用的minimongo实现不支持它。

有关$投影的更多信息,请访问here