我在尝试过滤Meteor中的嵌套文档时遇到了一些麻烦,我不想使用MongoDB Aggregation来展开我的文档。
我的用户文档
的示例{
Publications:[{
type:1
},{
type:2
}]
}
当我发现只获得类型1时,我得到了预期的结果 - 它们只返回具有类型1发布的用户文档,但它们也返回类型为2的发布,因为它们在发布中该用户的数组。
我可以在结果中循环以在发布之前手动删除这些出版物,但我不认为这是正确的方法。
有人可以帮我指导一个更好的解决方案吗?
Edited
肖恩的答案很好但不是正确的,投影不适用于流星。这项工作在robomongo上,但在项目中仍然返回用户的2种出版物类型。
答案 0 :(得分:1)
给这个查询一个镜头。
Meteor.users.find(
{ 'Publications.type': 1 },
{ fields: { 'Publications.$': 1 } }
);
这应该可以找到类型为1的发布的用户,并且只会在输出中包含那些匹配的发布。您可以在输出中包含其他字段,也可以将其包含在projection parameter中(例如{ 'Publications.$': 1, profile: 1 }
)。
但有一点需要注意。我认为使用{ 'Publications.$': 1 }
投影的查询只能在服务器端完成。客户端上使用的minimongo实现不支持它。
有关$
投影的更多信息,请访问here。