MongoDB面试必备:45题解析

需积分: 0 0 下载量 153 浏览量 更新于2024-08-03 收藏 13KB DOCX 举报
"MongoDB 45 道面试题及答案.docx" MongoDB是一个流行的NoSQL数据库系统,以其高性能、高可用性和易于扩展性而著名。它使用BSON(二进制交换和结构对象表示法)文档来存储数据,这种格式类似于JSON,但更适合在数据库中使用。在MongoDB中,"命名空间"指的是集合名称与数据库名称的组合,形成一个唯一的标识符。 分片是MongoDB处理大数据和高可用性的关键策略。通过将数据分布在多台机器上,分片允许数据库水平扩展,以应对不断增长的数据量。每个分片都是数据的一个部分,确保系统的整体性能和可靠性。要检查Mongos(分片路由服务)使用的连接,可以使用`db.adminCommand("connPoolStats")`命令。 副本集是MongoDB的另一种核心特性,用于提供数据冗余和高可用性。一个副本集中包含一个主节点和至少一个从节点,数据从主节点实时同步到从节点。如果主节点发生故障,从节点可以接管,保证服务不间断。 在MongoDB中创建和删除集合的操作相对简单。创建集合的命令是`db.createCollection(name,options)`,而删除集合的命令是`db.collection.drop()`。设计MongoDB的架构时,应考虑用户需求、数据结构、读写操作的优化、避免在读取时连接以及对复杂聚合的支持。 MongoDB的Profiler是一个强大的工具,用于监控和分析数据库操作的性能,帮助识别和优化慢查询。旧的分片文件可以移动到`moveChunk`目录,作为备份,但通常在分片平衡操作完成后会被删除。为了安全备份MongoDB,利用其日志功能至关重要,这使得能够在不影响正常运行的情况下进行备份。 MongoDB中的ObjectId是一个12字节的唯一标识符,用于区分每个文档。它由四个部分组成:时间戳、客户端机器ID、客户端进程ID和一个递增计数器,确保了在分布式环境中的唯一性。

com.mongodb.MongoSocketOpenException: Exception opening socket at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:70) ~[mongodb-driver-core-4.6.1.jar:na] at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:180) ~[mongodb-driver-core-4.6.1.jar:na] at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.lookupServerDescription(DefaultServerMonitor.java:193) ~[mongodb-driver-core-4.6.1.jar:na] at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:157) ~[mongodb-driver-core-4.6.1.jar:na] at java.lang.Thread.run(Thread.java:750) [na:1.8.0_371] Caused by: java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_371] at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81) ~[na:1.8.0_371] at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476) ~[na:1.8.0_371] at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218) ~[na:1.8.0_371] at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200) ~[na:1.8.0_371] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162) ~[na:1.8.0_371] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) ~[na:1.8.0_371] at java.net.Socket.connect(Socket.java:606) ~[na:1.8.0_371] at com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:107) ~[mongodb-driver-core-4.6.1.jar:na] at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:79) ~[mongodb-driver-core-4.6.1.jar:na] at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ~[mongodb-driver-core-4.6.1.jar:na] ... 4 common frames omitted

2023-06-02 上传