我试图实现一个MongoDB驱动程序(实际上我并没有从头开始实现它,我改进现有的小驱动程序,但那是无关紧要的)。向MongoDB发出命令似乎只是通过对$cmd
集合的特殊查询来执行。这在MongoDB glossary中描述如下:
$ CMD
公开MongoDB数据库命令的特殊虚拟集合。要使用数据库命令,请参阅问题命令。
好。那我该怎么做?怎么看Use Database Commands?
嗯,好的。那没用。我是写一个驱动程序,而不是使用它。许多驱动程序为
db.runCommand()
方法提供了等价物。在内部,使用db.runCommand()
运行命令相当于针对$cmd
集合的特殊查询。
是否有关于如何实际实现runCommand
功能的文档?针对$cmd
的查询应如何工作?
答案 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
}