过滤嵌套文档时发布

时间:2015-06-26 00:15:02

标签: mongodb meteor

我想知道如何发布一个过滤了嵌套文档的集合。

假设我有一个category文档,其中包含许多嵌套的post文档。

{
  name: 'myCategory',
  order: 2,
  posts: [
    {
      hidden: true
    },
    {
      hidden: false
    },
    {
      hidden: true
    },
    ...
  ]
}

如何发布此文档,仅包含posts设置为hidden的{​​{1}}?

我尝试过没有成功:false,不知道从哪里开始。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这样做没有好办法。您可以使用以下方法抽象集合:

Meteor.methods({
  getCategories: function () {
    Categories.find().map(function (categorie) {
      categorie.posts = _.compact(_.map(categorie.posts, function (post) {
        return post.hidden ? false : post
      }))
      return categorie
    })
  }
})

通过这个你可以得到一个静态数组。要获得反应,你必须付出更多的努力。您可以使用Tracker.Dependency

最简单的方法可能是重组文件。会有两个数组:postspostsHidden。这样您就可以使用fields选项。在您的出版物中,您可以这样做:

Categories.find({}, {fields: postsHidden: false})