Mongodb 如何获得只包含{name,stateStr,optimeDate}的rs.status()的投影
我想减少rs.status()方法的输出,这样我就可以看到每个成员的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
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"
这很有效。我正在修改它,让每个成员都能在一行上看到内容,但是这个概念很棒。谢谢,效果很好。我正在修改它,让每个成员都能在一行上看到内容,但是这个概念很棒。谢谢