2014-12-04 3 views
0

Я пытаюсь решить или выяснить, какой вариант лучше всего подходит для публикации Meteor и MongoDB.Meteor Publish and MongoDB

У меня есть организация, которая будет иметь более 300 пользователей, мой первый вариант, просто добавив массив USERID в организации Монго документа и выполнив следующие действия:

Meteor.publish('organizationsUsers', function() { 
    var organization = Organizations.findOne({_id: this.userId});.fetch(); 
    var usersArray = _.flatten(_.pluck(organization, "users"), true); 
    return Meteor.users.find({_id: {$in: usersArray}}); 
}); 

Мой второй вариант просто добавление organizationId к каждый пользователь и выполнив следующие действия:

Meteor.publish('organizationsUsers', function() { 
    var user = Meteor.users.findOne(this.userId); 
    return Meteor.users.find({organizationId: user.organizationId}); 
}); 

с первым вариантом я имею MongoDB с длинным массивом и вторым вариантом его более простым.

ответ

0

Хорошо после нескольких быстрых исследований и выяснения общего правила, если ваше поле более 100 предметов, которые в моем случае будут более 300, лучше пойти со вторым подходом.

Также, когда mongo запрашивает всех пользователей, принадлежащих организации с первым вариантом, mongo берет весь массив и просматривает каждый через индекс, а второй - только через индекс.

+0

Просто убедитесь, что у вас есть индекс в организацииID, а второй всегда должен быть быстрее. –