我正在通过linux终端创建一个MongoDB数据库,我正在尝试为数据库创建一个集合。
但是当我运行命令时:var requestTelemetry = telemetry as RequestTelemetry;
我收到以下错误消息:db.createCollection("mainCollection")
我不确定这意味着什么。如何使数据库成为主数据库?
由于
答案 0 :(得分:1)
您已使用--replSet选项(或等效的configuratin文件选项)启动mongod
。这会将mongod
置于一种模式,即在收到副本集配置之前,它不允许任何写入。
对于现有的副本集,可以通过在副本集的现有主节点上执行rs.add("<host>:<port>")来完成。
根据围绕这个问题的对话,我认为你有一个MongoDB实例,并且不打算拥有一个真正的多成员副本集。如果是这种情况,您有两种选择:
mongod
。 mongod
进程的数据目录。mongod
选项的情况下重新启动--replSet
进程。mongod
初始化为单个节点副本集。
答案 1 :(得分:0)
如果你在副本集上查询并且你所连接的shell不是主要的,那么预期的行为“Viratan”。
你可以做以下两件事之一。
断开与当前shell的连接并与Primary连接。在mongo shell中,你会看到它写成“PRIMARY”或“SECONDARY”。
如果您想要与主要成员相同的成员,则可以增加该特定成员的优先级和/或强制将formar primary作为stepDown。一旦主要人员下台,选举就会发生,因为所需的成员具有更高的优先权,这将成为主要成员。 您可以点击以下链接更改会员http://docs.mongodb.org/manual/tutorial/force-member-to-be-primary
一旦您以任何一种方式与Primary连接,您就可以查询数据库并完成您的工作。
Happy Mongoing ..: - )
- $
答案 2 :(得分:0)
你正试图在secondary.thats上创建一个新的集合,为什么它会给出错误,请使用primary来创建新的