個人的には、$ in演算子を使用し、postIdまたはshareIdの配列をレコードに保持するという、まったく異なる方法でこれを実行します。
http://docs.mongodb.org/manual/reference/operator/query/in/
公開関数は、次のようにシンプルに保つと最も効果的に機能することがわかりました。
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 });
});