定义
hello4.2版本新增。
hello返回一份描述mongod实例角色的文档。如果指定了可选字段saslSupportedMechs,该命令还会返回array of SASL mechanisms,用于创建指定用户的凭证。如果该实例是副本集的成员,则
hello会返回副本集配置和状态的子集,包括该实例是否为副本集的主节点 (primary node in the replica set)。当发送到不是副本集成员的
mongod实例时,hello会返回此信息的子集。MongoDB驱动程序和客户端使用
hello来确定副本集成员的状态并发现副本集的其他成员。
兼容性
此命令可用于以下环境中托管的部署:
- MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令具有以下语法:
db.runCommand( { hello: 1 } )
hello命令接受可选字段saslSupportedMechs: <db.user> hello.saslSupportedMechs以在其结果中返回附加字段 ,并接受comment <any> 以添加与命令关联的日志注释。
db.runCommand( { hello: 1, saslSupportedMechs: "<db.username>", comment: <any> } )
db.hello()中的 方法提供了mongosh hello的包装器。
行为
客户端断开连接
如果发出hello 的客户端在操作完成之前断开连接,则MongoDB使用hello killOp将 标记为终止。
输出
所有实例
以下hello 字段对所有角色通用:
hello.maxMessageSizeBytesBSON 传输协议消息的最大允许大小。默认值为
48000000字节。
hello.maxWriteBatchSize写入批处理中允许的最大写入操作数。 如果批处理超过此限制,客户端驱动程序会将该批次分成较小的群组,每个群组的计数小于或等于此字段的值。
此限制的值为
100,000次写入。
hello.localTime以 UTC 为单位返回本地服务器时间。该值为 ISO 日期。
hello.logicalSessionTimeoutMinutes会话在最近一次使用后保持活动状态的时间(以分钟为单位)。未从客户端收到新的读/写操作或未在此阈值内使用
refreshSessions刷新的会话将从缓存中清除。与过期会话相关的状态可随时被服务器清理。仅当
featureCompatibilityVersion不小于"3.6"时才可用。
hello.minWireVersion该
mongod或mongos实例能够用来与客户端通信的传输协议的最早版本。客户端可以使用 来帮助协商与MongoDB
minWireVersion的兼容性。
hello.maxWireVersion该
mongod或mongos实例能够用来与客户端通信的传输协议的最新版本。客户端可以使用 来帮助协商与MongoDB
maxWireVersion的兼容性。
hello.compression数组,列出用于或可用于压缩客户端与
mongod或mongos实例之间通信的压缩算法(即客户端与mongod或mongos实例通用的算法)。该字段仅在使用压缩时可用。例如:
如果启用
mongod以使用snappy,zlib压缩器,并且客户端指定了zlib,则compression字段将包含:"compression": [ "zlib" ] 如果启用
mongod以使用snappy,zlib压缩器,并且客户端指定了zlib,snappy,则compression字段将包含:"compression": [ "zlib", "snappy" ] 如果启用
mongod以使用snappy压缩器,并且客户端已指定zlib,snappy,则compression字段将包含:"compression": [ "snappy" ] 如果启用
mongod来使用snappy压缩器,并且客户端指定了zlib或客户端未指定压缩器,则省略该字段。
也就是说,如果客户端未指定压缩,或者客户端指定了未为连接的
mongod或mongos实例启用的压缩算法,则不会返回该字段。
分片实例
副本集
hello 在副本集节点返回时包含以下字段:
hello.hosts格式为
"[hostname]:[port]"的字符串数组,其中列出了副本集中所有既非隐藏、消极也非仲裁节点的成员。驱动程序使用此大量和
hello.passives来确定要读取哪些成员。
hello.passives格式为
"[hostname]:[port]"的字符串数组,列出了副本集中members[n].priority为0的所有成员。只有当至少有一名成员的
members[n].priority为0时,该字段才会出现。驱动程序使用此大量和
hello.hosts来确定要读取哪些成员。
hello.primary格式为
"[hostname]:[port]"的字符串,列出副本集的当前主节点。
hello.arbiterOnlytrue一个布尔值,为 时,表示当前实例是仲裁节点。仅当实例是仲裁节点时,arbiterOnly字段才存在。
hello.passivetrue一个布尔值,为 时,表示当前实例是被动的。passive字段仅适用于members[n].priority为0的节点。
hello.hiddentrue一个布尔值,为 时,表示当前实例处于隐藏状态。hidden字段仅适用于隐藏节点。
hello.tags一份
tags文档包含用户定义的副本集节点标签字段和值对。{ "<tag1>": "<string1>", "<tag2>": "<string2>",... } 对于读取操作,您可以在读取偏好中指定标签集,以将操作定向到具有指定标签的副本集节点员。
对于写入操作,您可以使用
settings.getLastErrorModes和settings.getLastErrorDefaults创建自定义写关注。
有关更多信息,请参阅配置副本集标签集。
hello.me[hostname]:[port]返回hello的节点的 。
hello.electionId每次选举的唯一标识符。仅包含在主节点 (primary node in the replica set)
hello的输出中。客户端用于确定何时进行选举。
hello.lastWrite包含数据库最近一次写入操作的 ops/sec 和日期信息的文档。
hello.lastWrite.opTime一个对象,给出上次写入操作的 ops/sec。
hello.lastWrite.majorityWriteDate一个日期对象,包含可被
majority读取的上次写入操作时间。
有关 ok 状态字段、operationTime 字段和 $clusterTime 字段的详细信息,请参阅“命令响应”。