开发者社区> 问答> 正文

PHP读写MongoDB,shell读写MongoDB,为什么数据还是相互隔离的?

首先启动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访问,怎么有如此差异?

展开
收起
落地花开啦 2016-06-16 17:58:41 2442 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

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

    show dbs

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

    $jihe = $m->db->haha;

    应该改为

    $jihe = $m->haha->haha;

    2019-07-17 19:41:41
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
MongoDB多数据中心的方案选型之路 立即下载
阿里云MongoDB云服务构建 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载