mongodb

php开发基于mongodb数据库的字段类型问题

比如下面的数据结构

{
    'field_1': 1,
    'field_2': '1',
    'field_3': true
}

在脚本语言里,这三个值是相等的,但mongodb可不这样认为,如果你用string类型去寻找field_1的值,那么永远找不到。

可是像在php这种弱类型语言里,本来就是string,int傻傻分不清楚,所以使用mongodb的php程序员经常会出现以下杯具场景,你存储的时候主键是一个用函数生成的int型数字,但取出记录的时候可能直接使用前端传递过来的GET参数,很不巧它只能是一个string类型,这样你就永远找不到这条记录了。

解决以上问题,我觉得一开始就用php7的标量类型约束,最好启用严格模式是个好习惯,这样类型不对了,能有个提示,你就可以进行类型转换了。

 

转载请注明:http://blog.p2hp.com/archives/4708…

        

php 连接mongodb方法

$manager = new MongoDB\Driver\Manager('mongodb://test1:test1@192.168.1.188:27017,192.168.1.187:27017/AppStore?replicaSet=test&safe=true&w=1&wtimeoutMS=300000&authSource=AppStore&ssl=false;');
或者

$options => array("replicaSet" => "test","safe"=>true,"w"=>1,"wtimeoutMS"=>2000,"authSource"=>"AppStore");
$dsn = 'mongodb://test1:test1@192.168.1.188:27017,192.168.1.187:27017';
$mongo =new MongoDB\Driver\Manager($dsn,  $options);

linux 命令连接
./mongo -host 192.168.1.188 -u test1 -ptest --authenticationDatabase Test

参考
http://cn2.php.net/manual/en/mongodb-driver-manager.construct.php

https://docs.mongodb.com/manual/reference/connection-string/#connections-connection-options

        

MongoDB Replica Set使用经验分享理论篇

MongoDB Replica Set是MongoDB官方推荐的主从复制和高可用方案,用于替代原有的Master-Slave主从复制方案。Replicat Set具有自动切换功能,当Primary挂掉之后,可以自动由Replica Set中的某一个Secondary来切换到Primary,以实现高可用的目的,不像MySQL那样需要使用第三方软件。…

mongoDB No suitable servers found 错误解决

一、问题描述
用PHP连接mongoDB时报 No suitable servers found (`serverSelectionTryOnce` set): [connection refused calling ismaster on ‘127.0.0.0:20000’]  错误
二、分析问题
通过查阅各方面的资料,此问题的原因在于,操作系统开启了IPV6支持,但mongod未开启ipv6支持。或者如果是主从的话,可能主从的顺序弄错了。
三、解决问题

1、解决办法有以下3个:

(1)删除操作系统中ipv6解析,删除/etc/hosts'中的'::1 localhost, 这一行

(2)开启mongod的ipv6支持,参数:./bin/mongod –filePermissions 0777 –ipv6

(3) 调整主从顺序。

(4) 也有可能是连接时用的replicaSet参数不对造成的

mongodb导入bson数据

mongorestore -h 127.0.0.1:27017 -d u_67you --directoryperdb /data/u_67you

-h:MongoDB所在服务器地址

-d:需要恢复的数据库实例,例如:u_67you,当然这个名称也可以和备份时候的不一样,比如u_67you2

--directoryperdb:备份数据所在位置,例如:/data/u_67you

--drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!

php 插入mongodb uuid类型

$luuid ='e4eaaaf2-d142-11e1-b3e4-080027620cdd'; //格式一定要正确 » RFC 4122.

$uuid='0123456789abcdef';
$id = new \MongoDB\BSON\Binary($uuid,\MongoDB\BSON\Binary::TYPE_UUID);

查mongodb的LUUID类型为以下代码

$luuid= str_replace("-","",$luuid);
$id= new \MongoDB\BSON\Binary(hex2bin($luuid),\MongoDB\BSON\Binary::TYPE_OLD_UUID);
$id=bin2hex($id);
var_dump($id);
luuid 转为uuid:
$luuid=二进制字符
$id=bin2hex($luuid);
$a = substr($id,6, 2).substr($id,4, 2).substr($id,2, 2).substr($id,0, 2);
$b = substr($id,10, 2).substr($id,8, 2);
$c
        

MongoDB 最佳实践 – 持续更新版

版本历史:

- V1.0  2017.02.06 TJ Tang 初始版本

前言

作为MongoDB的一名方案架构师,我的大部分时间都是在和MongoDB的客户和用户交互。在这里,我希望通过一个不断更新的活文章的方式来为大家收集整理一下MongoDB开发及维护时候值得了解或者遵从的一些最佳实践。我非常真切地希望您也可以参与进来,共同维护这个文档,让更多的用户受惠(可以通过文末微信号联系我)…