Về mặt cá nhân, tôi sẽ giải quyết vấn đề này theo một cách rất khác, bằng cách sử dụng toán tử $ in và giữ một mảng postIds hoặc shareIds trong hồ sơ.
http://docs.mongodb.org/manual/reference/operator/query/in/
Tôi thấy các chức năng xuất bản hoạt động tốt nhất khi chúng được giữ đơn giản, như sau.
Meteor.publish('posts', function() {
return Posts.find();
});
Meteor.publish('sharedPosts', function(postId) {
var postRecord = Posts.findOne({_id: postId});
return Shares.find{{_id: $in: postRecord.shares_array });
});