Mongoose:读取ReplicaSet

 呦呦嘉宾 发布于 2023-02-08 18:41

我有一个mongodb副本集,我想从中读取主数据库和辅助数据库中的数据.

我用这个命令连接到db:

mongoose.connect('mongodb://user:password@54.230.1.1,user:password@54.230.1.2,user:password@54.230.1.3/PanPanDB?replicaSet=rs0&readPreference=nearest');

它不起作用..我的申请继续从初级读取..有任何建议吗?

2 个回答
  • 如果要从辅助节点中读取,则应将读取首选项设置为以下任一项:

    secondaryPreferred - 在大多数情况下,操作从辅助成员读取,但如果没有辅助成员可用,则从主要成员读取操作.

    secondary - 从副本集的辅助成员读取所有操作.

    nearest根据您的示例读取将按ping时间选择最近的成员(可以是主要成员或次要成员).

    注意事项

    使用除了以外的任何读取首选项时primary,您需要了解可能影响应用程序逻辑的最终一致性的潜在问题.例如,如果您正在从辅助节点中读取,则主节点上可能还有尚未复制到该辅助节点的更改.

    如果您在阅读辅助文件时担心更强的一致性,则应查看" 写入关注副本集"文档.

    由于辅助数据库必须写入与主数据库相同的数据,因此从辅助数据库读取数据可能无法提高性能,除非您的应用程序非常重读或最终具有一致性.

    2023-02-08 18:44 回答
  • 按照MongoDB网站和Mongoose 网站上的文档,您可以添加此指令以配置Mongoose上的ReadPreference:

    var opts = { replSet: {readPreference: 'ReadPreference.NEAREST'} };
    

    mongoose.connect('mongodb://###:###@###:###/###', opts);

    这已经使用Mongoose版本3.8.9进行了测试

    2023-02-08 18:44 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有