The publish is fine.
I created a project with your snippets and I see the value of notified for a user client side. I suspect that you aren't actually updating the users. You want to make sure that you are doing it server side.
As Hubert said you want to make sure where you want the notified field to be. Either in the base of the user or in the profile section, something to keep in mind is that if it's in the profile section a user can edit their own profile section:
Meteor.users.update( Meteor.user()._id, { $set: { 'profile.notified': 1 } } );
Check all the fields of a logged in user server side to make sure you have a notified value by adding this server side:
Meteor.methods({
user: function() {
console.log(Meteor.users.findOne(this.userId));
}
});
and then typing in Meteor.call('user'); in your js console. Look for the result in your terminal window.
Also your line
Meteor.users.update(myUsers._id, {$addToSet: {notified : 1}});
Would result in notified being:
notified: [ 1 ]
i.e. addToSet is creating an array where one doesn't exist and then adding the value 1 to it.
I would also check on your loop code to. myUsers is the loop index? Shouldn't it be the user object from a loop.
I would expect something more like:
Meteor.users.find().forEach(function (user) {
Meteor.users.update( user._id, { $set: { notified: 1 } } );
});
if you wanted to make all users notified (you would probably want to select by {notified: 0} for efficiency though). This also simply makes notified: 1 rather than [1]