• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

数据库 – PHP读写MongoDB,shell读写MongoDB,兵分两路操作,怎么数据还是相互隔离的?

php 搞代码 3年前 (2022-01-25) 16次浏览 已收录 0个评论
文章目录[隐藏]

首先启动mongod服务器;
打开一个shell客户端:

use haha
db.haha.insert({‘a’:’aaa’})
db.haha.find()
{‘a’:’aaa’} // 添加成功了

打开另一个shell客户端:

use haha
db.haha.find() // 确认一下刚才的输入
{‘a’:’aaa’} // 果然有效

可以看到,shell客户端里是有效果的。
下面是php代码:

$m = new MongoClient();
$jihe = $m->db->haha;

$cursor = $jihe-(、本文来源gao@!dai!ma.com搞$$代^@码网*搞gaodaima代码>find();
foreach($cursor as $item){
var_dump($item); //什么都没有,空数据
}

然后修改php代码为:

$m = new MongoClient();
$jihe = $m->db->haha;

$doc = array(‘b’=>’bbb’);
$jihe->insert($doc); // php自己试着插入数据

$cursor = $jihe->find();
foreach($cursor as $item){
var_dump($item); //这次仅有 {‘b’:’bbb’}数据,没有shell里面设置的{‘a’:’aaa’}
}

这是怎么回事呢?都是针对同一个数据库发起的操作啊。shell客户端和php访问,怎么有如此差异?

回复内容:

首先启动mongod服务器;
打开一个shell客户端:

use haha
db.haha.insert({‘a’:’aaa’})
db.haha.find()
{‘a’:’aaa’} // 添加成功了

打开另一个shell客户端:

use haha
db.haha.find() // 确认一下刚才的输入
{‘a’:’aaa’} // 果然有效

可以看到,shell客户端里是有效果的。
下面是php代码:

$m = new MongoClient();
$jihe = $m->db->haha;

$cursor = $jihe->find();
foreach($cursor as $item){
var_dump($item); //什么都没有,空数据
}

然后修改php代码为:

$m = new MongoClient();
$jihe = $m->db->haha;

$doc = array(‘b’=>’bbb’);
$jihe->insert($doc); // php自己试着插入数据

$cursor = $jihe->find();
foreach($cursor as $item){
var_dump($item); //这次仅有 {‘b’:’bbb’}数据,没有shell里面设置的{‘a’:’aaa’}
}

这是怎么回事呢?都是针对同一个数据库发起的操作啊。shell客户端和php访问,怎么有如此差异?

推测:shell连的是haha,php连的是db,这是2个数据库空间。
打开一个shell客户端,输入命令

<code>show dbs</code>

输出结果除了haha,是不是还有一个db?如果是Yes

<code>$jihe = $m->db->haha;</code>

应该改为

<code>$jihe = $m->haha->haha;</code>

如果是No,(摊手)php多年没碰了。

确认你连的是同一个服务器,同一个数据库


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:数据库 – PHP读写MongoDB,shell读写MongoDB,兵分两路操作,怎么数据还是相互隔离的?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址