如果有一个mongo实例正在运行,我如何判断它正在从shell监听哪些端口号?我以为db.serverStatus()美元就可以了,但我看不出来.我看到了

"connections" : {
    "current" : 3,
    "available" : 816

很接近...但是没有.建议?我读过文档,似乎找不到任何可以执行此操作的命令.

推荐答案

在system shell中,您可以使用lsof(见下面德里克的答案)或netstat -an来查看流程的实际操作.但是,假设您只能访问mongo shell(您的问题标题暗示了这一点),那么您可以运行serverCmdLineOpts()命令.该输出将为您提供命令行(argv)上传递的所有参数以及配置文件(已解析)中的参数,您可以根据这些信息推断端口mongod正在侦听.下面是一个例子:

db.serverCmdLineOpts()
{
    "argv" : [
        "./mongod",
        "-replSet",
        "test",
        "--rest",
        "--dbpath",
        "/data/test/r1",
        "--port",
        "30001"
    ],
    "parsed" : {
        "dbpath" : "/data/test/r1",
        "port" : 30001,
        "replSet" : "test",
        "rest" : true
    },
    "ok" : 1
}

如果您没有通过上述特定端口选项,那么mongod将默认监听27017和28017(http console).注意:还有几个其他参数可以在不显式的情况下更改端口,请参见此处:

https://docs.mongodb.org/manual/reference/configuration-options/#sharding.clusterRole

Mongodb相关问答推荐

如何联接Mongoose中的集合并检索特定字段

如何使用聚合管道查找未销售但存在于产品详细信息集合中的产品的ID

mongodb.将文档分组在数组中,对它们进行评分计数和求和并添加新字段

避免在 MongoDB 聚合框架中使用 ISODate() 以便管道可以是纯 JSON

MongoDB - 分组并找到前 N 个

Nestjs中不同语言数据的mongodb聚合代码

MongoDB查询仅返回嵌入文档

如何在 2 个应用程序之间共享mongoose模型?

创建索引需要很长时间

看起来当我执行 fs.writeFile() 时,更改的文件会重新启动 nodemon.怎么让它不重启?

Meteor 如何接收对 MongoDB 查询结果的更新?

使用 ObjectId.GenerateNewId() 还是离开 MongoDB 创建一个?

如何在 $lookup Mongodb 的 LocalField 中将字符串转换为 objectId

MongoDB $or 查询

如何使用 MongoDB 和 Mongoid 在 Rails 3 上进行适当的数据库测试 (TDD)

Mongo: query by key one level deep

多次使用位置 `$` 运算符来更新嵌套数组

mongoosefind()不返回结果

如何从mongoose中的对象 ID 获取创建日期?

findOneAndUpdate 中的文档未更新