使用--rest与MongoDB';蒙哥斯

使用--rest与MongoDB';蒙哥斯,mongodb,rest,Mongodb,Rest,我创建了一个小型MongoDB v2.6.4集群,其中包含一个mongos路由器、三个配置服务器和少数mongod数据服务器。它工作得很好,我可以从mongos客户端很好地执行CRUD操作,它直接指向适当的碎片 我现在想尝试一下rest服务 当我使用mongod对单个MongoDB数据服务器进行测试时,它完全按照规定工作 即使现在,我也可以连接到使用--rest运行的每个碎片,并获得web响应。但是,结果有点出乎意料。我看到了概述、客户机、dbtop、写锁、日志等。如果单击listDatabas

我创建了一个小型MongoDB v2.6.4集群,其中包含一个mongos路由器、三个配置服务器和少数mongod数据服务器。它工作得很好,我可以从mongos客户端很好地执行CRUD操作,它直接指向适当的碎片

我现在想尝试一下rest服务

当我使用mongod对单个MongoDB数据服务器进行测试时,它完全按照规定工作

即使现在,我也可以连接到使用
--rest
运行的每个碎片,并获得web响应。但是,结果有点出乎意料。我看到了概述、客户机、dbtop、写锁、日志等。如果单击listDatabase,我实际上会看到列出的数据库。但是,我尝试的任何REST尝试都返回一个JSON对象,该对象显示offest 0、无行、总计0个ROE、无查询和0毫秒

目前我认为这无关紧要,因为我已经直接连接到了一个碎片,并且预期只能看到碎片的内容——尽管进一步的实验甚至无法产生这样的结果

再次强调,在当前的分片配置中,mongos、NodeJS和PHP都可以很好地查看、查询和操作我的MongoDB集合中的数据

但是,我正在尝试(如果可能的话)通过REST连接到
mongos
shard服务,因为它确实提供了
--httpinterface
选项,我认为它将公开对shard的访问并做正确的事情

它提供了标准状态页面,但单击任何链接或手动滚动任何REST都会导致一条消息,提示未启用
--REST
,我应该启用它

REST is not enabled, use --rest to turn on.
check that port 28017 is secured for the network too.
问题是,mongos不允许这样做!(然而,蒙哥德确实如此)

  • 这完全可能是正确的行为,但我不确定REST服务在分片配置中如何工作
  • 我没有使用配置文件,而是通过命令行指定所有内容。也就是说,我尝试在yaml中传递一个带有
    RESTInterfaceEnabled:true
    的配置文件,但没有任何帮助
  • mongos正在返回一个web界面,其中列出了所有命令、db版本和日志。它缺少了我可能期望的其他诊断信息(通常是mongod特有的)。但是它提供的链接不起作用——所有这些都要求我打开一个不存在的选项
  • 我已经手动检查了每个shard数据服务器(使用
    --shardsvr
    运行mongod),直接连接到它们确实提供了REST访问
  • 切分集群的其他所有功能都运行良好。我就是不能像在单节点非共享解决方案中一样,让自己休息,访问我的数据库或集合

  • 我可能错过了什么?这可能吗?有什么想法吗?

    AFAIK REST界面主要用于监视/管理,而不是访问文档。MongoDB不提供官方REST接口来执行CRUD操作。为此,您需要创建自己的库,或者在生态系统中找到一个库来执行此操作,请参见

    您是否有具体的要求/需求


    PS:我在任何部署/开发中都没有使用--rest参数。

    只是希望能够在开发过程中通过手动滚动一个简单的URL从web快速验证某些集合和元素是否存在。我正在导入一堆数据,尝试导入会容易得多,看看我是否可以从web访问一到两条记录,如果有什么需要更改的话,再将它们全部删除。正如我指出的,其他一切都很好,我正在寻找一条简单的捷径。也许我只需要分解并使用MongoDB查看器。不,其余部分在生产中。我明白了,所以是的,您必须使用第三方工具,您应该能够在这里找到一个适合您需要的工具:不要忘记mongo shell!