当遇到下面的问题时
WriteResult({ "writeError" : { "code" : undefined, "errmsg" : "not master" } })
其主要的原因是你所在的副本集服务器不是主服务器
首先输入指令
rs.status()
查看副本集的配置情况
例如下面的样子
{
"set" : "rs0",
"date" : ISODate("2014-09-28T08:38:21Z"),
"myState" : 2,
"syncingTo" : "10.0.0.52:27017",
"members" : [
{
"_id" : 0,
"name" : "10.0.0.51:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 16998,
"optime" : Timestamp(1411893449, 3),
"optimeDate" : ISODate("2014-09-28T08:37:29Z"),
"self" : true
},
{
"_id" : 1,
"name" : "10.0.0.52:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 16975,
"optime" : Timestamp(1411893449, 3),
"optimeDate" : ISODate("2014-09-28T08:37:29Z"),
"lastHeartbeat" : ISODate("2014-09-28T08:38:21Z"),
"lastHeartbeatRecv" : ISODate("2014-09-28T08:38:21Z"),
"pingMs" : 0,
"electionTime" : Timestamp(1411876531, 1),
"electionDate" : ISODate("2014-09-28T03:55:31Z")
},
{
"_id" : 2,
"name" : "10.0.0.53:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 16973,
"optime" : Timestamp(1411893449, 3),
"optimeDate" : ISODate("2014-09-28T08:37:29Z"),
"lastHeartbeat" : ISODate("2014-09-28T08:38:21Z"),
"lastHeartbeatRecv" : ISODate("2014-09-28T08:38:20Z"),
"pingMs" : 0,
"syncingTo" : "10.0.0.51:27017"
}
],
"ok" : 1
}
找到主库去进行操作就是可以解决这个问题