百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

关于 PHP 启动 MongoDb 找不到指定模块问题

itomcoil 2025-06-03 22:35 4 浏览

前言:

最近有一个小 demo,需要通过 PHP 将用户行为记录储存到 MongoDB,再用 Spark 做协同过滤。由于以前处理跨语言交互是通过消息中间件,这次本地使用 MongoDB 却弄出了几个问题。首先是本地安装了扩展,启动时报找不到模块错误,再个时 PHP 进行的实例化使用时报 MongoClient 和一些函数不存在。最后也推荐一些方便快捷的 MongoDB 图形化工具。

环境:

1. Windows10

2. PHP7.4

3. MongoDB 4.4.14 Server

5. php_mongodb-1.12.1-7.4-nts-vc15-x64

安装:

1. MongoDB Server 下载

2. php_mongodb-1.12.1-7.4-nts-vc15-x64 下载

3. navicat for mongodb 下载

问题:

1. 找不到指定模块 php_mongodb

PHP 中添加扩展 php_mongodb 不正确,除了需要 php_mongodb.dll 还要 php_mongodb.pdb 复制到 php 安装目录下的 ext 中

最后在 php.ini 添加 extension=php_mongodb.dll,重启完后查看 php -m 或者浏览器中查看 phpinfo ()

2. MongoClient 类不存在

原因是这个是旧版本 php_mongo 扩展提供的类,新版本是通过后面演示代码的方式,如果不知道扩展提供的新方法或函数可以通过一下方式查看。

(1). get_declared_classes () 查看扩展里预设的函数

工具使用:

1. MongoDB Server

(1). 启动服务

2. Navicat for MongoDB

(1). 连接服务

代码演示:

1. 查询

public function testMongoDbQuery()
    {
        $manager = new \MongoDB\Driver\Manager("mongodb://localhost:27017");

        $filter = ['x' => ['$gt' => 0]];
        $options = [
            'projection' => ['_id' => 0],
            'sort' => ['x' => -1],
        ];

        // 查询数据
        $query = new \MongoDB\Driver\Query($filter, $options);
        $cursor = $manager->executeQuery('test.sites', $query);

        foreach ($cursor as $document) {
            print_r($document);
        }
    }

2. 插入

public function testMongoDbInsert()
    {
        $manager = new \MongoDB\Driver\Manager("mongodb://localhost:27017");

        $bulk = new \MongoDB\Driver\BulkWrite;
        // mongoDb默认存在一个自增长的字符串ID
        $document = [
            '_id' => new \MongoDB\BSON\ObjectID,
            'videoId' => mt_rand(1, 99999),
            'userId' => mt_rand(1, 9999),
            'score' => floatval(mt_rand(5,100)),
            'date' => time()
        ];
        $bulk->insert($document);
        $res = $manager->executeBulkWrite('tanhua.recommend_video_20191001', $bulk);

        return $res;
    }

3. 批量插入

public function testMongoDbBulk()
    {
        //return get_declared_classes();
        $manager = new \MongoDB\Driver\Manager("mongodb://localhost:27017");

        $bulk = new \MongoDB\Driver\BulkWrite;
        $bulk->insert(['x' => 1, 'name'=>'tenent', 'url' => 'http://www.runoob.com']);
        $bulk->insert(['x' => 2, 'name'=>'Google', 'url' => 'http://www.google.com']);
        $bulk->insert(['x' => 3, 'name'=>'taobao', 'url' => 'http://www.taobao.com']);
        $res = $manager->executeBulkWrite('test.sites', $bulk);

        return $res;
    }

相关推荐

PHP使用mongo-php-library操作MongoDB数据库的方法

1.介绍1.1介绍福哥今天带着大家学习一下使用PHP操作MongoDB数据库的方法,虽然我们的TFLinux早就安装了MongoDB数据库了,但是还没有应用用到MongoDB数据库,福哥打算先给T...

MongoDB数据库的快速部署和启动(mongodb数据库怎么使用)

一、Mongodb介绍常见数据库介绍关系数据库RDBMS设计表结构,通过SQL语句进行操作。连表关系常见的关系型数据库:mysqloracle(商业)DB2(IBM)sqlserver(微软...

关于 PHP 启动 MongoDb 找不到指定模块问题

前言:最近有一个小demo,需要通过PHP将用户行为记录储存到MongoDB,再用Spark做协同过滤。由于以前处理跨语言交互是通过消息中间件,这次本地使用MongoDB却弄出了几个问...

Mongodb在Linux上安装教程(mongodb安装教程图解)

正文开始:系统环境:linuxcentos7mongodb版本:4.4.0一、下载为了保证各处版本一致性及便捷性,使用官网下载安装包安装官网传送门:https://www.mongodb.com/t...

MongoDB下载安装(mongodb下载哪个版本)

零、参考资料0.1安装https://blog.csdn.net/weixin_45767204/article/details/1301247370.2下载安装失败权限问题:可以看以下这个htt...

MongoDB入门指南:下载、安装和配置一款强大的NoSQL数据库

MongoDB是一种流行的开源NoSQL数据库管理系统,用于存储和处理大规模数据。在本指南中,我将详细介绍如何下载、安装、配置和启动/停止MongoDB服务。下载和安装MongoDB:a.访问Mo...

MongoDB 从入门到实战:.NET 平台完整指南

一、什么是MongoDBMongoDB是一种功能强大且灵活的NoSQL数据库,适用于处理大规模的半结构化数据和高并发场景。它不依赖于固定的表结构和关系模型,而是以文档的形式存储数据,每个文档可...

CentOS安装MongoDB教程(centos8 mongodb)

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。下载...

MongoDB最全详解(万字图文总结)(mongodb $ne)

大家好,我是mikechen。MongoDB是大型互联网架构经常使用到的数据库,各大厂也都会涉及,下面我就全面来详解MongoDB@mikechen作者:mikechen来源:mikechen.ccM...

MongoDB功能与安装指南(mongodb部署安装)

MongoDB主要功能介绍MongoDB是一款开源的NoSQL文档数据库,适用于灵活、高性能和大规模数据存储场景。以下是其核心功能:灵活文档模型数据以BSON(BinaryJSON)文档形...

系列二:Anaconda虚拟环境准备(anaconda虚拟环境pycharm)

1、打开cmd执行,输入condacreate-nchatglm3python=3.102、激活ChatGLM3condaactivatechatglm3#退出虚拟环境condad...

第54节 错误处理及调试-Web前端开发之Javascript-零点程序-王唯

本内容是《Web前端开发之Javascript视频》的课件,请配合大师哥《Javascript》视频课程学习。错误处理对于web应用开发至关重要,任何javascript错误都有可能会导致网页无法使用...

系列专栏(八):JS的第七种基本类型Symbols

ES6作为新一代JavaScript标准,已正式与广大前端开发者见面。为了让大家对ES6的诸多新特性有更深入的了解,MozillaWeb开发者博客推出了《ES6InDepth》系列文章。CSDN...

JavaScript 运算符(javascript 运算符优先级)

运算符=用于赋值。运算符+用于加值。运算符=用于给JavaScript变量赋值。算术运算符+用于把值加起来。实例指定变量值,并将值相加:y=5;z=2;x=y+z;在以上语句...

JavaScript 变量(javascript 变量传递)

变量是用于存储信息的"容器"。实例varx=5;vary=6;varz=x+y;就像代数那样x=5y=6z=x+y在代数中,我们使用字母(比如x)来保存值(比如5)。通过上面的表达式...