MongoDB 扩展

此扩展是在 » libmongoc» libbson 库之上开发的。它为核心驱动程序功能提供了最小的 API:命令查询写入连接管理BSON 序列化

依赖于此扩展的 PHP 用户库可能会提供更高层的 API,例如查询构建器、单个命令助手方法和 GridFS。应用程序开发人员应该考虑将此扩展与 » MongoDB PHP 库 结合使用,该库实现了在 MongoDB 针对其他语言的驱动程序中找到的相同更高层 API。这种关注点的分离使扩展能够专注于扩展实现至关重要的基本功能,以实现性能。

添加注释

用户贡献注释 3 个注释

n dot vandermeij at mycademy dot com
7 年前
*** 仅适用于版本 >= 1.2.0 ***

如果您遇到以下错误

"PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mongodb.so'
- /usr/lib64/php/modules/mongodb.so: undefined symbol: php_json_serializable_ce in Unknown on line 0"

有关详细说明,请访问

https://derickrethans.nl/undefined-symbol.html

TLDR:您需要在 json.so 之后加载 mongodb.so 扩展
扩展

特别感谢 Derick Rethans 指出这一点!
mike at eastghost dot com
7 年前
有一个适配器 - 因此旧的 MongoClient / MongoDB 代码将在新的 PHP7/Mongo 混乱中运行

https://github.com/alcaeus/mongo-php-adapter
mike at eastghost dot com
6 年前
PHP '用户空间' / 高级驱动程序就在这里 -- [url]https://github.com/mongodb/mongo-php-driver[/url]

在新的驱动程序中,这些将失败

(A) $count = $collection->find( $criteria )->count();

(B1) $cursor = $collection->find( $criteria );
(B2) $count = $cursor->count();

在新的驱动程序中,结果计数已成为一个独立的操作,应用于集合,而不是游标

$count = $collection->count( $criteria );
$cursor = $collection->find( $criteria );

来自 jmikola 2016 年 1 月 6 日 ([url]https://github.com/mongodb/mongo-php-driver/issues/195 在这里[/url])

"在新的驱动程序中,Cursor 对象现在表示执行的命令或查询的实际结果,而在旧的驱动程序中,游标具有双重性质(执行前或执行后)。旧的 MongoCursor::count() 方法实际上使用相同的条件调用了一个计数命令;但是,这意味着计数命令的计算可能与实际查询结果不同,因为它们不一定在相同的结果数据上操作。

"用户空间库在集合上实现了一个 count() 方法,它也接受过滤器条件,我们更希望鼓励这样做,以便用户了解这些操作是分开的。如果我们最终在用户空间库中使 Cursor 可计数,我们将使用 iterator_count() 在结果上提供精确的计数;但是,这还需要我们缓存结果,以便用户可以重新卷起游标并再次迭代(最近在 PHPLIB-81 中讨论了这一点)。虽然旧的驱动程序在重新卷起时会重新执行查询,但这也不是新的驱动程序中 Cursor 的性质所允许的。

"我知道这可能看起来很不方便,但我相信显式 API 终究是比旧的驱动程序向前迈进了一步,在旧的驱动程序中,许多用户可能不知道幕后到底发生了什么。如果您有任何其他问题,请随时跟进。
To Top