Python 面试之Mongodb在使用过程中有什么问题

Mongodb在使用过程中有什么问题

一 关于连接方面

1. mongodb目标计算机积极拒绝无法连接

此问题很多情况下是出现在window安装 Mongo时,出现的主要原因是配置没配好:
1). 要把Mongo.exe添加系统环境中
2). 在Mongo.exe的目录创建data/db目录来存放mongo的数据
3). 在Mongo.exe的目录创建log文件来存放mongo的日志。
这三个缺一不可,一定要注意路径!!

2. 出现mongo.js的错误,如下:

在这里插入图片描述

解决方法: 删除data\db\文件下面的mongo.lock文件 重启服务 OK 。

二 使用方面

1). bson size不能超过16MB的限制。单个文档的BSON size不能超过16MB。find查询有时会遇到16MB的限制,譬如使用$in 查询的时候,in中的数组元素不能太多
2). Mongo对于时间的存储使用的MongoDate时间是UTC的,要使用日期格式来存储。

在这里插入图片描述
3). 使用count()统计数量错误。 需要使用aggregate pipeline来得到正确统计结果

4). 从shell中更新/写入到文档的数字,会变为float类型

5). DB中的namespace数量太多导致无法创建新的collection,
错误提示:error: hashtable namespace index max chain reached:1335,如何解决呢?
修改nssize参数并重启Mongodb,这新nssize只会对新加入的DB生效,对以前已经存在的DB不生效,如果你想对已经存在的DB采用新的nssize,必须在加大nssize重启之后新建DB,然后把旧DB的collection 复制到新DB中。

6). moveChunk因旧数据未删除而失败.
错误日志:”moveChunk failed to engage TO-shard in the data transfer: can’t accept new chunks because there are still 1 deletes from previous migration“。
意思是说,当前正要去接受新chunk 的shard正在删除上一次数据迁移出的数据,不能接受新Chunk,于是本次迁移失败。这种log里显示的是warning,但有时候会发现shard的删除持续了十几天都没完成,查看日志,可以发现同一个chunk的删除在不断重复执行,重启所有无法接受新chunk的shard可以解决这个问题
解决办法: 重启Mongodb

7). mongo对数据分页慢。
这是因为Mongo是吧分页的数据加载到内存中,由于内存限制,会越来越慢,如何解决:

分页时不要使用SKIP来实现。应该使用查询条件+排序+限制返回记录的方法,即边查询,边排序,排序之后,抽取上一页中的最后一条记录,作为当前分页的查询条件,从而避免了skip效率低下的问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值