我想在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});
}
非常感谢任何帮助。
答案 0 :(得分:1)
您需要使用聚合来执行此操作。 $unwind
操作允许您对各个通知进行查询:
Users.aggregate(
{$match: {_id: Meteor.userId()},
{$unwind: "$notifications"},
{$match: {"notifications.read": true}}
)
这会将每个通知作为自己的文档返回。