1

rs.status() メソッドからの出力を減らしたいので、各メンバーから name、stateStr、および optimeDate だけが表示されます。これを行う方法はありますか?rs.status() は、どこかのコレクションに支えられているだけです。それは何で、どうすれば直接クエリできますか。事実上、私が欲しいのは次のようなものです...

PRIMARY> rs.status().pretty( {members.name: 1, members.stateStr: 1, members.optimeDate: 1 } );
{
    "name" : "mongo1.rek.tc",
    "stateStr" : "PRIMARY",
    "optimeDate" : ISODate("2012-09-06T17:28:19Z")
},
{
    "name" : "mongo2.rek.tc",
    "stateStr" : "SECONDARY",
    "optimeDate" : ISODate("2012-09-06T17:28:14Z")
},
{
    "name" : "mongo3.rek.tc",
    "stateStr" : "SECONDARY",
    "optimeDate" : ISODate("2012-09-06T17:28:15Z")
}
4

2 に答える 2

2

$cmd 名前空間に対してプロジェクションを使用することはできません。ヘルパーから翻訳されたクエリを試してみました。つまり、次のとおりです。

 db.$cmd.findOne( { replSetGetStatus : 1 })

それはまだ私に結果を投影させません。それが可能だったとしても、配列の複数のサブ要素 (メンバーは配列) を返す射影もうまく機能しないため、射影が機能したとしても問題が発生します。

これは、少し単純な JavaScript を使用して行うことができます。以下は機能しますが、必要に応じてフォーマットとフィールド名を追加することをお勧めします。

rs.status().members.forEach( 
    function(z){ 
            printjson(z.name);
            printjson(z.stateStr);
            printjson(z.optimeDate); 
    } 
   )
于 2012-09-06T18:36:39.503 に答える