问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php mongoclient 连接 mongodb ,出现 "No candidate servers found"错误。实在没办法,求大神们解答。

发布网友 发布时间:2022-04-07 19:53

我来回答

1个回答

热心网友 时间:2022-04-07 21:23

表标PHP已经自带了mongo功能,你就可以操作下面的代码(但是你必须有安装mongodb服务器)一、连接数据库使用下面的代码创建一个数据库链接复制代码代码如下:listDBs());//能打印出数据库数组,看看有几个数据库。?>如图:上图说有一个数据库名字叫local,总大小1个字节,他是空的。看见ok表示运行成功。现在你可以使用$connection链接来操作数据库了选择数据库使用下面的代码来选择一个数据库复制代码代码如下:dbname;?>这里的数据库并不一定是一个已经存在的数据库,如果所选择的数据库不存在,则会新建一个数据库,所以在选择数据库的时候,注意一定要填上正确的数据库名如果拼写错误的话,很有可能会新建一个数据库复制代码代码如下:mybiglongdbname;//做一些事情$db=$connection->mybiglongdbnme;//现在会连上一个新的数据库?>获取一个集合获取一个集合跟选择数据库拥有相同的语法格式复制代码代码如下:baz;//选择数据库$collection=$db->foobar;//选择foobar集合//或者使用更简洁的方式$collection=$connection->baz->foobar;?>插入一个文档*数组是可以被储存到数据库中的基本单元一个随机的文档可能是这样复制代码代码如下:“MongoDB”,“type”=>“database”,“count”=>1,“info”=>(object)array(“x”=>203,“y”=>102),“versions”=>array(“0.9.7″,“0.9.8″,“0.9.9″));?>注意:你可以嵌套数组与对象,对象与文档在mongodb中几乎是一样的,你可以使用$doc调用一个文档或对象,但是info字段总是一个对象而不是一个文档,本约束适用于所有文档使用MongoCollection::insert()插入一个文档复制代码代码如下:foo->bar;$collection->insert($doc);?>mongodb的insert()、save(),区别主要是:若存在主键,insert()不做操作,而save()则更改原来的内容为新内容。存在数据:{_id:1,"name":"n1"}insert({_id:1,"name":"n2"})会提示错误save({_id:1,"name":"n2"})会把n1改为n2。使用MongoCollection::findOne()查询文档为了证明上面那段代码的数据已经插入到数据库里了,我们进行简单的findOne()操作以得到集合中的第一个文档数据,这种方法只返回一个文档数据,这种方法适用于在你的查询语句的时候只匹配一个文档或者你只关心第一条数据复制代码代码如下:findOne();var_mp($obj);?>你会看到下列结果复制代码代码如下:array(5){["_id"]=>object(MongoId)#6(0){}["name"]string(7)“MongoDB”["type"]=>string(8)“database”["count"]=>int(1)["info"]=>array(2){["x"]=>int(203)["y"]=>int(102)}["versions"]array(3){[0]=>string(5)“0.9.7″[1]=>string(5)“0.9.8″[2]=>string(5)“0.9.9″}}注意_id字段自动加载了文档上,MongoDB储存元素中以_以及$开头的都是供内部使用的添加文档为了做一些更有趣的事情,我们添加简单的文档到集合中,这些文档如下复制代码代码如下:value);?>我们可以使用循环相当有效的插入数据复制代码代码如下:insert(array(“i”=>$i));}?>注意:我们可以插入不同的字段在同一字符集中,在这方面意味着MongoDB拥有非常自由的储存模式在一个集合中计算文档的数量现在我们插入了101个文档(我们用循环插入了100个,之前还插入了一个),我们可以使用count()来看看我们的数据是不是都被插入进去了复制代码代码如下:count();?>这段代码将打印出101MongoCollection::count()也可以查询字段数据使用游标得到集合中的所有文档为了得到集合中的所有文档,我们可以使用MongoCollection::find()方法,find()方法返回一个MongoCursor对象,可以让我们重复得到查询所匹配的的文档复制代码代码如下:find();foreach($cursoras$id=>$value){echo“$id:“;var_mp($value);}?>这样我们会打印出集合中的这101个文档,$id就是文档中的_id字段,$value就是文档本身为查询规定一个标准我们可以通过find()方法得到集合中的文档子集,例如,我们要查询出集合中i字段为71的文档,我们可以使用下列方法复制代码代码如下:71);$cursor=$collection->find($query);while($cursor->hasNext()){var_mp($cursor->getNext());}?>我们将打印如下数据复制代码代码如下:array(2){["_id"]=>object(MongoId)#6(0){}["i"]=>int(71)["_ns"]=>“testCollection”}为查询设定一个范围我们可以通过find()创建一个查询语句以得集合中的一个子集,例如如果我们得到所有”i”>50的文档,我们可以使用如下代码复制代码代码如下:array(‘$gt'=>50));//注意'$gt'两边的单引号$cursor=$coll->find($query);while($cursor->hasNext()){var_mp($cursor->getNext());}?>我们同样可以得到20array(“\$gt”=>20,“\$lte”=>30));$cursor=$coll->find($query);while($cursor->hasNext()){var_mp($cursor->getNext());}?>我们非常容易漏掉$美元符号,你也可以选择你自定义的符号来代替美元符号,选择一个不会在你的建里面出现的符号例如”:”,在php.ini中加上这么一句话复制代码代码如下:mongo.cmd=“:”那么上面的代码就可以替换成复制代码代码如下:array(“:gt”=>20,“:lte”=>30));?>当然你也可以使用ini_set(“mongo.cmd”,“:”)的方法来改变创建一个索引MongoDB支持索引,并且可以很容易的加到一个集合中,你只要指定某个字段为索引就行了,并且还可以指定正序索引(1)与倒序索引(-1)下面的代码为I创建了索引复制代码代码如下:ensureIndex(array(“i”=>1));//在”i”上创建了一个索引$coll->ensureIndex(array(“i”=>-1,“j”=>1));//在”i”上创建了倒序索引在”j”上创建了正序索引?>一个完整的简单例子这个例子展示了如何链接mongodb数据库,如何选择数据库,如何插入数据,如何查询数据,以及关闭数据库链接复制代码代码如下:comedy;$collection=$db->cartoons;//添加一个元素$obj=array("title"=>"CalvinandHobbes","author"=>"BillWatterson");$collection->insert($obj);//修改$newdata=array('$set'=>array("title"=>"CalvinandHobbes"));$collection->update(array("author"=>"caleng"),$newdata);//删除$collection->remove(array('author'=>'caleng'),array("justOne"=>true));//添加另一个元素,使用不同的格式$obj=array("title"=>"XKCD","online"=>true);$collection->insert($obj);//查询所有的集合$cursor=$collection->find();//重复显示结果foreach($cursoras$obj){echo$obj["title"]."\n";}//关闭链接$m->close();?>输出结果为复制代码代码如下:CalvinandHobbesXKCD
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 怎样设定选股条件 腰肌劳损贴什么膏药效果好 午餐肉主要是用猪的哪个部位做成的? 你好,我想问问,腰肌劳损贴膏药贴什么位置合适 老人家腰酸背痛贴什么膏药才行的呢? 我腰疼,那个膏药怎么贴 我腰疼,那个膏药怎么贴啊! 庭院太阳能灯如何才能够保证在阴雨天也正常使用?有没有下雨天也能用的太阳能灯家用型? 鼠标右击后上下不停跳动无法选项 我电脑鼠标点右键,然后那个选择框就从上到下一直闪,点个刷新都点不了,这是什么情况?怎么解决? 为什么我的笔记本电脑右键按了会跳掉 电脑开机,点鼠标右键闪动不停,随便打开一个程序不停复制 点击鼠标右键后,菜单不停的飞快的闪是怎么回事 qq怎么恢复历史聊天记录 烧饼的制作方法有几种做出的烧饼还要脆香 普通烧饼的做法有哪些? 烧饼的推荐做法? 烧饼的制作方法是什么? 新生儿左眼一只有眼屎 求2011杭州市中考满分作文!《 为了自己梦想》。 条件选股用哪几个选股条件最好? 如何设置自动选股功能 如何设置选股条件?谢谢 选股要满足哪些条件?有哪些技巧? 什么是CPU的序列号 如何在同花顺中添加自己编写的选股条件? 条件选股怎么设置 带一的知识点中考政治一个梦想,一条道路是什么? 为中考政治准备——收集社会上成功人士的事迹 河北中考政治知识点总结 怎样快速提高政治成绩 初三*题:新时代的青少年要实现自己的个人理想,和社会理想,担当历史使命,需要怎样的思想做引导? 政治成绩用总上不去,谁能告诉我,怎样提高政治成绩,好评。 如何提高政治成绩 高中 要 具体答案。 当你跟别人说话时,别人不搭理你,你会有什么样的感受,又会怎样做? 求初三学习计划一份 作文:在追逐梦想的日子里,或者追梦,怎么开头和选材,一定快,我们16就中... 跟别人说话对方不理,你会怎么办? 跟别人说一大堆话别人不理不睬这样该怎么用词语形容? 如何在功放主板上查偏置电压(0电压点)。要图要详细