藤崎様
早速のご回答有難うございます。
なるほど、本家MLでは「The oplog cannot be accessed via a mongos instance. 」ですね。。
ご指摘の通り、最終構成はシャーディング + レプリカセット環境 を想定しています。
以前、このMLで相談させて頂きました、「検索のための非正規化項目の更新」を、OpLogをトリガとしてMongoシェルで実装しています。
https://groups.google.com/forum/#!topic/mongodb-jp/Cuup31pV5Qw
非シャーディング 環境では、OpLog / 参照先コレクション / 参照元コレクションが全て同一のmongodに存在していますので、
特に問題なく、OpLogでトリガして参照先の値を参照元にコピーしていました。
参照先コレクション or 参照元コレクションがシャーディングされていると、OpLogをトリガしているmongod上に実態が存在していない可能性があり、
そのため、mongos を通じて OpLog / 参照先コレクション / 参照元コレクション を一元的に扱いたいと思った次第です。
今までは、なるべくアプリに依存しないよう、Mongoシェルだけで実装することを考えていましたが、
アプリとMongoシェルの中間のプログラムで(mongod と mongos の両方に接続して) 処理させてみようと考えています。
ありがとうございました。