Meteor collection.find - 返回多个值

时间:2014-04-09 21:14:43

标签: mongodb meteor

我想在meteor中结合meteor-roles包实现通知功能,我希望向角色中的所有用户显示相同的通知。 我认为将主要通知存储在通知集合中是一个好主意,并且引用带有id和" read"的通知。用户集合中的属性。 否则,我需要为角色中的每个用户存储每个通知。

我的数据库:

User Collection: "username": "UserXYZ", "notifications": [[{ "_id": "231", "read": "false"}], [{ "id": "3234", "read": "true"}]] …
Notification Collection: "_id": "231" …

现在我想找到相应的通知,但问题是,我无法告诉find函数我想要显示多个通知。

我认为这样的事情会这样做:

notifications: function() {
    var user = Users.findOne({_id: Meteor.userId()});
    return Notifications.find({_id: user.notifications._id, read: false});
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您需要使用聚合来执行此操作。 $unwind操作允许您对各个通知进行查询:

Users.aggregate(
    {$match: {_id: Meteor.userId()},
    {$unwind: "$notifications"},
    {$match: {"notifications.read": true}}
)

这会将每个通知作为自己的文档返回。