Mongodb 如何获得只包含{name,stateStr,optimeDate}的rs.status()的投影

Mongodb 如何获得只包含{name,stateStr,optimeDate}的rs.status()的投影,mongodb,Mongodb,我想减少rs.status()方法的输出,这样我就可以看到每个成员的name、stateStr和optimeDate。有办法做到这一点吗?rs.status()是由某个集合支持的,它是什么,我如何直接查询它。实际上我想要的是 PRIMARY> rs.status().pretty( {members.name: 1, members.stateStr: 1, members.optimeDate: 1 } ); { "name" : "mongo1.rek.tc", "st

我想减少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")
}

您不能对$cmd名称空间使用投影。我尝试了助手的翻译查询,即:

 db.$cmd.findOne( { replSetGetStatus : 1 })
它仍然不能让我预测结果。即使这是可能的,返回数组的多个子元素(成员是一个数组)的投影也不能很好地工作,因此即使投影有效,也会有问题

您可以使用一些简单的javascript来实现这一点。以下方法可行,但如果对您有用,您可能需要添加更多格式和字段名:

rs.status().members.forEach( 
    function(z){ 
            printjson(z.name);
            printjson(z.stateStr);
            printjson(z.optimeDate); 
    } 
   )

您不能对$cmd名称空间使用投影。我尝试了助手的翻译查询,即:

 db.$cmd.findOne( { replSetGetStatus : 1 })
它仍然不能让我预测结果。即使这是可能的,返回数组的多个子元素(成员是一个数组)的投影也不能很好地工作,因此即使投影有效,也会有问题

您可以使用一些简单的javascript来实现这一点。以下方法可行,但如果对您有用,您可能需要添加更多格式和字段名:

rs.status().members.forEach( 
    function(z){ 
            printjson(z.name);
            printjson(z.stateStr);
            printjson(z.optimeDate); 
    } 
   )
从命令行:

mongo --eval "rs.status()" | grep "name\|stateStr\|optimeDate"
从命令行:

mongo --eval "rs.status()" | grep "name\|stateStr\|optimeDate"

这很有效。我正在修改它,让每个成员都能在一行上看到内容,但是这个概念很棒。谢谢,效果很好。我正在修改它,让每个成员都能在一行上看到内容,但是这个概念很棒。谢谢