如何将mongodb数组长度作为附加集合字段发布?

时间:2015-06-02 09:21:05

标签: arrays mongodb meteor

我有一个包含以下字段的mongodb集合:

  • _id
  • name(字符串)
  • [items](字符串数组)
  • secret(布尔)

我想发布秘密字段为真的所有_id,名称字段和项目数组长度(不包括秘密字段)。

我在某处读过我可以在查找查询中添加其他文档属性,但我的google foo不起作用。

以下是我的发布方法没有额外的items_count属性:

Meteor.publish("all_items", function() {
    return myItems.find(
                 {secret: true},
                 {fields:
                   {_id:1,name:1}
                 });
        });

如何在我的出版物中[item]长度创建一个额外的字段?

编辑:我似乎需要使用aggregate函数和$project运算符。流星不支持它。

任何人都可以向我确认这一点(即它是唯一的选项而且不受支持)?

1 个答案:

答案 0 :(得分:0)

你可以add aggregation framework support to Meteor,然后如你所提到的那样使用一个带$project阶段的简单聚合管道,如下所示:

myItems.aggregate(
    [
       {$match: {secret: true}},
       {$project: {_id: 1, name: 1, items_count: {$size: '$items'}}}
    ]
)