如何通过查询特殊的$ cmd集合来运行MongoDB命令?

时间:2015-02-21 05:02:03

标签: mongodb

我试图实现一个MongoDB驱动程序(实际上我并没有从头开始实现它,我改进现有的小驱动程序,但那是无关紧要的)。向MongoDB发出命令似乎只是通过对$cmd集合的特殊查询来执行。这在MongoDB glossary中描述如下:

  

$ CMD

     

公开MongoDB数据库命令的特殊虚拟集合。要使用数据库命令,请参阅问题命令。

好。那我该怎么做?怎么看Use Database Commands

  

许多驱动程序为db.runCommand()方法提供了等价物。在内部,使用db.runCommand()运行命令相当于针对$cmd集合的特殊查询。

嗯,好的。那没用。我是一个驱动程序,而不是使用它。

是否有关于如何实际实现runCommand功能的文档?针对$cmd的查询应如何工作?

1 个答案:

答案 0 :(得分:0)

  

对$ cmd的查询应如何工作?

数据库命令是对特殊集合$cmd的查询, 查询选择器定义命令本身的位置。因此,使用db.runCommand({isMaster: 1})运行命令的查询等价物是:

db.$cmd.findOne({isMaster: 1})

在我的机器中,它们都产生了以下结果:

{
        "ismaster" : true,
        "maxBsonObjectSize" : 16777216,
        "maxMessageSizeBytes" : 48000000,
        "maxWriteBatchSize" : 1000,
        "localTime" : ISODate("2016-04-22T12:46:02.378Z"),
        "maxWireVersion" : 4,
        "minWireVersion" : 0,
        "ok" : 1
}