好友
阅读权限 10
听众
最后登录 1970-1-1
本帖最后由 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,命令行操作:[Bash shell] 纯文本查看 复制代码
E:[/size][/font][font=宋体][size=3]mkdir data\db
cd ../../
ProgramFile\mongodb\bin\mongod
#重新新打开一个cmd;
E:
[/size][/font]
[font=宋体][size=3]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 的故事:
此刻我也要出场了,作为专业接线人(接红线 ),我也要知道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] 纯文本查看 复制代码
//以下内容源于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);
}
在网页中打开。显示出数组,查看服务器会有显示集合被写入;
此刻欢天喜地入洞房;
以后便是随他们发展了
故事纯属编造,切勿相信,php与mongo链接确实是真真切切的从一个个坑里爬出来,很多地方或许也没弄明白,最后的那个成功的方法灵感来源于java的JDBSC:ODBC连接器,
你有一个热心,我有一个热心,我们就有两个热心!
免费评分
查看全部评分
发帖前要善用【论坛搜索 】 功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。