[转载]php与mongodb在我的撮合下,不得不说的秘密
本帖最后由 wushaominkk 于 2018-7-18 16:42 编辑此文谨献给正在枯燥无味的“程序猿”“攻城狮”。
这个故事发生在windows省apache市,我们的主人公是php5.6n(这个任务大家都很熟悉啦,我们就不做介绍了,后文以php代替)与mongodb,我(php插件);
1. mongodb的简介:
mongodb的家在E:\ProgramFile\mongodb(下载mongodb到E:\ProgramFile\mongodb)
mongodb最近找了新工作在E:\data\db她可以在家里的bin车库下打开mongo的车,但是mongo车必须使用mongod的油;(创建mongodb存储文件,打开服务器mongod,打开客户端mongo,命令行操作:E:mkdir data\db
cd ../../
ProgramFile\mongodb\bin\mongod
#重新新打开一个cmd;
E:
ProgramFile\mongodb\bin\mongo
鉴于mongdb是一个javascript shell 我们先做一个简单的运算,就像在chrome控制台上的js语言一样(测试略);
接着我们做一个‘数据库’的操作
首先我们插入一条数据:
db.w3r.insert({X:5}) //这是将5插入到w3r集合的x字段中(我们可以使用JS的注释方式)
db.w3r.find() //这是查找
显示数据即成功!
)
mongodb有我知道的这么几种职业(基本数据类型,并不完全,详细信息查看手册)
键值对(Bson):类似与JS 的json;(Bson就是二进制的Json,Binary JSON)
集合:类似与RDBMS中的表格,但无固定结构 {“id”:"01"}{"id":"02","name":"woodenwang"}
capped collections:类似于RRD(读接收数据寄存器)
元数据
mongodb会的技能有这么几种(基本语法,此处,我们皆用test集合做演示):
显示所有数据库 show dbs
显示当前数据库 db
创建数据库 use test //存在就进入,反之创建,新建的数据库插入数据即可显现;
删除数据库 db.dropDatabase()
删除集合 db.collection.drop()
插入集合 db.test.insert({"title":"你想不到优秀","content":"有些人的优秀,你永远也想象不到。多么可怕。多么恐惧!"})
更新集合 db.collection.update(查询条件,更新的数据,不存在查询的记录是否新建默认否,只更新找到的第一条数据)
删除集合 db.collection.remove() //有3个可选参数,第一个为删除文档的条件,另一个为是否删除一个文件,最后一个是抛出异常的级别
查询文档 db.test.find()
db.test.find().pretty() //格式化方法显示文档;
以上是增删改查,其他请查阅手册
2.php与mongodb 的故事:
此刻我也要出场了,作为专业接线人(接红线{:301_988:}),我也要知道php的能力(php版本)家在哪(操作系统,此处是编译php的操作系统)是否安全可靠(php线程安全),此时我也得稍微介绍一下我自己,我有两个职业,分别是mongo扩展和mongdb扩展,具体能力如下:
原本用 mongo 一些查询操作返回一个数组的,在 mongodb 中变成游标读取的形式。
mongo插件 这个扩展已经废弃了,不过 bug 和 security 方面的问题还会继续修复,不支持PHP7
mongodb插件 支持PHP7,同时不断加入 MongoDB 新版本的特性支持
为了以后发展的更好我们当然选择mongodb插件喽,此时我们要给php包装(引入插件)了,鉴于我们的了解(我的配置是windows下php5.6n(n就是nts,即非线程安全)compiler:vc11,Architecture:X86,Thread Safety:disable(phpinfo查看))所以我们需要给php购买(下载)php_mongodb-1.2.9-5.6-nts-vc11-x86包;
接下来就是开包,杂物我们不需要,直接拿出(粘贴)php_mongodb.dll,放到php的口袋里(粘贴在php安装根目录中的ext文件夹中),当然还要在php的身份证中加入这个包装(打开php.ini文件并将extension=php_mongodb.dll写入),重新区办理身份证(重启服务器,查看phpinfo,存在即成功,不存在请返回查找插件);
最后是撮合php与mongo:
额,此处真所谓是阅尽千帆啊,
$m=new MongoDB();
$m=new MongoClient();
这些都不可以,有说插件ts与nts的关系,还有说啥来着,忘了;
然后我们用phpStorm点击跳转MongoDB,MongoClient竟然都可以跳过去;但是网页上就是显示 Class 'MongoDB' not found
查看mongoDB 的服务器也没有动静
这种感觉就像去饭店吃饭,吃的很爽,但是发现无法支付!!!!!怎么办?麻烦朋友过来了;
//以下内容源于php官网$manager = new MongoDB\Driver\Manager();
/* Insert some documents so that our query returns information */
$bulkWrite = new MongoDB\Driver\BulkWrite;
$bulkWrite->insert(['name' => 'Ceres', 'size' => 946, 'distance' => 2.766]);
$bulkWrite->insert(['name' => 'Vesta', 'size' => 525, 'distance' => 2.362]);
$manager->executeBulkWrite("test.asteroids", $bulkWrite);
/* Query for all the items in the collection */
$query = new MongoDB\Driver\Query( [] );
/* Query the "asteroids" collection of the "test" database */
$cursor = $manager->executeQuery("test.asteroids", $query);
/* $cursor now contains an object that wraps around the result set. Use
* foreach() to iterate over all the result */
foreach($cursor as $document) {
print_r($document);
}
在网页中打开。显示出数组,查看服务器会有显示集合被写入;
此刻欢天喜地入洞房;
以后便是随他们发展了
https://static.52pojie.cn/static/image/hrline/line7.png
https://static.52pojie.cn/static/image/hrline/line7.png
故事纯属编造,切勿相信,php与mongo链接确实是真真切切的从一个个坑里爬出来,很多地方或许也没弄明白,最后的那个成功的方法灵感来源于java的JDBSC:ODBC连接器,
这里下载MongoDB中文手册下载地址:
https://static.52pojie.cn/static/image/hrline/5.gif
{:301_978:}你有一个热心,我有一个热心,我们就有两个热心!{:301_978:}
无故事版操作,后缀名是 .study,直接使用文本编辑器打开即可
链接: https://pan.baidu.com/s/1HQoqt5ubZrelbJWkZk_g0A 密码: 52pj 看这个文章还真有点费劲,可能不懂的人更不容易懂 写的挺有意思的,很容易理解,谢谢{:301_993:} tjlbj 发表于 2018-7-18 11:18
看这个文章还真有点费劲,可能不懂的人更不容易懂
{:301_972:}仔细想想确实有点乱
厉害了学习下 不能用mysql的思维来学习mongo否则你展不开 附:https://github.com/doctrine/mongodb-odm 你的排版。。 很好,可以试着操作一波
页:
[1]