MongoDB 2.2 锟斤拷 1.3.0 锟芥本锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷支锟斤拷 » 锟斤拷取锟斤拷选锟斤拷, 锟斤拷锟斤拷锟斤拷指锟斤拷锟斤拷锟斤拷锟斤拷询MongoDB锟斤拷锟狡硷拷. 锟斤拷取锟斤拷选锟斤拷锟斤拷鼙锟街革拷锟斤拷锟斤拷锟斤拷锟斤拷希锟斤拷锟斤拷呖锟斤拷希锟斤拷锟斤拷锟斤拷羌锟斤拷锟斤拷锟�. 锟斤拷选锟斤拷娑拷锟揭拷锟斤拷隙锟斤拷碌募坛锟� (锟劫革拷锟斤拷锟斤拷 MongoCollection 锟斤拷锟教筹拷锟斤拷应锟斤拷 MongoDB 实锟斤拷锟侥讹拷取锟斤拷选锟斤拷).
锟斤拷取锟斤拷选锟斤拷锟斤拷模式锟酵憋拷签锟斤拷锟斤拷锟较碉拷. 模式锟斤拷锟斤拷mongod锟斤拷锟斤拷锟斤拷权, 锟斤拷 » 锟斤拷签锟斤拷 为mongod实锟斤拷锟较革拷指锟斤拷锟剿憋拷准锟斤拷只锟斤拷锟斤拷些ping锟斤拷锟斤拷锟斤拷mongd实锟斤拷时锟斤拷锟斤拷15锟斤拷锟斤拷锟节碉拷Mongod实锟斤拷锟角合革拷摹锟�
锟斤拷锟叫的讹拷取锟斤拷选锟筋都锟斤拷锟杰凤拷锟截从节碉拷锟斤拷锟斤拷诘锟斤拷锟绞憋拷牡锟斤拷锟斤拷荩锟斤拷锟斤拷锟斤拷锟窖★拷锟�MongoClient::RP_PRIMARY锟斤拷锟斤拷锟斤拷悴皇癸拷锟�MongoClient::RP_PRIMARY.模式锟斤拷锟斤拷确锟斤拷锟斤拷锟接︼拷每锟斤拷锟斤拷锟斤拷坦锟绞憋拷锟斤拷锟斤拷荨锟�
MongoClient::RP_PRIMARY
锟斤拷锟叫的讹拷锟斤拷锟斤拷锟斤拷使锟斤拷锟斤拷锟节碉拷. 默锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷诘悴伙拷锟斤拷茫锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟揭伙拷锟斤拷斐o拷锟�
锟斤拷锟侥J斤拷锟绞癸拷帽锟角╋拷锟斤拷锟斤拷突. 一锟斤拷锟斤拷签锟斤拷指锟斤拷为 MongoClient::RP_PRIMARY 锟斤拷锟斤拷锟斤拷一锟斤拷锟届常锟斤拷
MongoClient::RP_PRIMARY_PREFERRED
锟节达拷锟斤拷锟斤拷锟斤拷锟斤拷, 锟斤拷取锟斤拷锟斤拷锟斤拷锟斤拷诘锟�. 锟斤拷锟角o拷锟斤拷锟斤拷锟斤拷诘悴伙拷锟斤拷锟�, 锟斤拷锟斤拷转锟斤拷锟节硷拷, 锟斤拷锟接从节碉拷锟饺★拷锟斤拷荨锟�
锟斤拷锟斤拷取锟斤拷选锟斤拷锟斤拷锟揭伙拷锟斤拷锟角╋拷锟�, 锟酵伙拷锟斤拷锟斤拷锟饺达拷锟斤拷锟节碉拷锟饺�, 锟斤拷锟斤拷锟斤拷茫锟饺ワ拷咏诘锟狡ワ拷锟斤拷签. 锟斤拷锟斤拷咏诘锟矫伙拷锟狡ワ拷涞斤拷锟角�, 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷一锟斤拷锟届常锟斤拷
2.2锟芥本锟斤拷mongos锟斤拷锟斤拷锟斤拷锟斤拷全支锟街讹拷取锟斤拷选锟筋功锟杰★拷锟斤拷锟斤拷锟接碉拷mongos实锟斤拷时, MongoClient::RP_PRIMARY_PREFERRED锟斤拷锟斤拷锟酵诧拷询锟斤拷锟接节碉拷.
MongoClient::RP_SECONDARY
锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟酵革拷锟接节碉拷. 锟斤拷锟矫伙拷写咏诘锟斤拷锟矫o拷锟斤拷锟斤拷锟斤拷一锟斤拷锟届常.
锟斤拷锟斤拷锟斤拷锟斤拷萍锟斤拷锟斤拷锟斤拷锟揭伙拷锟斤拷咏诘锟�, 锟斤拷锟角匡拷锟斤拷没锟叫匡拷锟矫的从节点。锟劫革拷锟斤拷锟接o拷锟斤拷一锟斤拷锟节碉拷锟揭伙拷咏诘锟�, 锟斤拷锟斤拷一锟斤拷锟劫裁节点,锟斤拷锟斤拷没锟斤拷锟斤拷锟斤拷锟接节碉拷锟剿o拷锟接节点处锟节癸拷锟斤拷转锟狡阶段伙拷锟竭诧拷锟斤拷锟矫碉拷时锟斤拷
锟斤拷锟斤拷取锟斤拷选锟斤拷锟斤拷锟斤拷吮锟角╋拷锟�, 锟酵伙拷锟斤拷锟斤拷锟斤拷锟揭碉拷匹锟斤拷锟角╋拷拇咏诘悖憋拷佣锟揭伙拷锟斤拷咏诘恪o拷锟斤拷没锟斤拷匹锟斤拷锟角╋拷拇咏诘悖拷锟斤拷锟斤拷锟揭伙拷锟斤拷斐�
MongoClient::RP_SECONDARY_PREFERRED
锟斤拷锟斤拷锟斤拷锟斤拷锟铰o拷锟接从节碉拷锟饺★拷锟斤拷锟街伙拷锟斤拷锟斤拷诘锟斤拷锟斤拷锟斤拷拢锟斤拷锟饺★拷锟斤拷诘锟�
锟斤拷锟斤拷取锟斤拷选锟斤拷锟斤拷锟斤拷吮锟角╋拷锟�, 锟酵伙拷锟斤拷锟斤拷锟斤拷锟揭碉拷匹锟斤拷锟角╋拷拇咏诘悖憋拷佣锟揭伙拷锟斤拷咏诘恪o拷锟斤拷没锟斤拷匹锟斤拷锟角╋拷拇咏诘悖拷锟斤拷锟斤拷锟揭伙拷锟斤拷斐�.
MongoClient::RP_NEAREST
锟斤拷锟斤拷锟斤拷锟�锟斤拷取一锟斤拷ping时锟斤拷锟斤拷锟�15锟斤拷锟斤拷慕诘恪J癸拷锟� MongoClient::RP_NEAREST 模式锟侥伙拷锟斤拷锟斤拷取锟斤拷锟杰凤拷锟斤拷锟斤拷锟斤拷锟节碉拷锟斤拷叽咏诘恪�
锟斤拷锟斤拷锟斤拷锟侥J斤拷幕锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷岱拷锟斤拷锟斤拷锟斤拷锟斤拷锟绞毙★拷慕诘悖拷锟斤拷锟斤拷嵌锟饺★拷锟斤拷锟斤拷锟斤拷枪锟绞憋拷幕锟斤拷锟斤拷锟斤拷碌摹锟�
锟斤拷锟斤拷取锟斤拷选锟斤拷锟斤拷锟斤拷吮锟角╋拷锟�, 锟酵伙拷锟斤拷锟斤拷锟斤拷锟揭碉拷匹锟斤拷锟角╋拷慕诘悖憋拷佣锟揭伙拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟节点。
Note:
锟皆革拷锟狡硷拷锟侥讹拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟节凤拷锟斤拷锟截讹拷锟斤拷锟斤拷选锟斤拷锟斤拷锟斤拷锟侥节点。 MongoClient::RP_NEAREST 模式锟斤拷锟饺★拷锟斤拷诘锟酵从节碉拷锟阶刺拷锟斤拷业锟斤拷锟绞憋拷偷慕诘锟斤拷锟斤拷锟饺★拷锟�
» 锟斤拷签锟斤拷锟斤拷锟斤拷锟斤拷锟皆讹拷锟斤拷锟斤拷锟斤拷锟斤拷讯锟斤拷锟斤拷锟街革拷锟斤拷囟锟斤拷慕诘恪o拷锟角╋拷锟绞癸拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷为锟斤拷锟杰o拷锟斤拷锟斤拷锟斤拷指锟斤拷锟截讹拷锟斤拷锟斤拷锟捷节碉拷锟斤拷锟街革拷锟斤拷锟絤ongod实锟斤拷锟斤拷指锟斤拷锟斤拷锟酵的诧拷锟斤拷使锟矫o拷锟斤拷锟斤拷锟铰硷拷锟街撅拷锟斤拷叻锟斤拷锟斤拷锟街撅拷锟�
锟斤拷锟斤拷锟街革拷锟斤拷锟角╋拷锟斤拷锟斤拷锟斤拷锟侥讹拷取锟斤拷选锟斤拷模式锟斤拷
MongoClient::RP_PRIMARY_PREFERRED
MongoClient::RP_SECONDARY
MongoClient::RP_SECONDARY_PREFERRED
MongoClient::RP_NEAREST
锟姐不锟斤拷指锟斤拷锟斤拷签锟斤拷锟斤拷 MongoClient::RP_PRIMARY 锟斤拷取锟斤拷选锟斤拷模式锟斤拷只锟斤拷选锟斤拷锟斤拷一锟斤拷锟接节点,锟斤拷签锟斤拷锟斤拷锟矫o拷锟斤拷锟斤拷锟斤拷锟斤拷锟侥J斤拷锟�
锟斤拷取锟斤拷选锟斤拷锟斤拷锟街革拷锟斤拷锟斤拷锟経RI锟斤拷 MongoClient::__construct(), 使锟矫诧拷询锟斤拷锟斤法锟斤拷锟斤拷使锟矫憋拷签锟斤拷锟斤拷锟斤拷锟斤拷锟斤法锟斤拷锟捷革拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷梅锟斤拷锟斤拷锟�
锟斤拷某锟斤拷锟斤拷取锟斤拷选锟斤拷使锟斤拷锟剿诧拷询锟斤拷锟斤拷 锟斤拷签锟斤拷锟斤拷 readPreferenceTags值应锟斤拷锟角讹拷锟脚分革拷锟斤拷锟斤拷一锟斤拷冒锟斤拷锟斤拷锟接的硷拷值锟皆★拷
Note:
每一锟斤拷锟斤拷询锟斤拷锟斤拷锟斤拷谋锟角╋拷锟斤拷锟绞癸拷锟� readPreferenceTags 锟斤拷锟斤拷. 锟斤拷锟斤拷php锟斤拷锟斤拷URL锟斤拷询锟斤拷锟侥凤拷式锟斤拷readPreferenceTags锟斤拷锟斤拷锟斤拷值锟洁互锟斤拷锟斤拷锟角★拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷顺锟斤拷锟矫憋拷签锟斤拷锟斤拷
锟斤拷锟斤拷锟斤拷锟斤拷也锟斤拷锟揭伙拷锟狡ワ拷锟侥憋拷签锟斤拷锟斤拷锟斤拷取锟斤拷失锟杰o拷 锟斤拷锟斤拷锟斤拷锟斤拷锟结供锟斤拷锟绞的伙拷锟剿o拷锟斤拷盏锟� readPreferenceTags 值指锟斤拷"没锟叫憋拷签锟斤拷锟斤拷选锟斤拷".
Example #1 锟斤拷询锟斤拷锟斤法锟侥讹拷取锟斤拷选锟斤拷URI锟斤拷锟斤拷
<?php
// Prefer the nearest server with no tag preference
$uri = 'mongodb://rs1.example.com,rs2.example.com/';
$uri .= '?readPreference=nearest';
$m = new MongoClient($uri, array('replicaSet' => 'rs'));
// Pick the nearest server in the "east" data center
$uri = 'mongodb://rs1.example.com,rs2.example.com/';
$uri .= '?readPreference=nearest';
$uri .= '&readPreferenceTags=dc:east';
$m = new MongoClient($uri, array('replicaSet' => 'rs'));
// Prefer the nearest server in the "east" data center also used for reporting,
// but fall back to a server in the "west" data center
$uri = 'mongodb://rs1.example.com,rs2.example.com/';
$uri .= '?readPreference=nearest';
$uri .= '&readPreferenceTags=dc:east,use:reporting';
$uri .= '&readPreferenceTags=dc:west';
$m = new MongoClient($uri, array('replicaSet' => 'rs'));
// Prefer the nearest server in the "east" data center, then a server in the
// "west" data center, and finally fall back to no tag set preference
$uri = 'mongodb://rs1.example.com,rs2.example.com/';
$uri .= '?readPreference=nearest';
$uri .= '&readPreferenceTags=dc:east';
$uri .= '&readPreferenceTags=dc:west';
$uri .= '&readPreferenceTags=';
$m = new MongoClient($uri, array('replicaSet' => 'rs'));
?>
Example #2 Setting read preferences with array syntax for tag sets
<?php
$m = new MongoClient('mongodb://rs1.example.com,rs2.example.com', array(
'replicaSet' => 'rs',
));
// Prefer the nearest server with no tag preference
$m->setReadPreference(MongoClient::RP_NEAREST, array());
// Pick the nearest server in the "east" data center
$m->setReadPreference(MongoClient::RP_NEAREST, array(
array('dc' => 'east'),
));
// Prefer the nearest server in the "east" data center also used for reporting,
// but fall back to a server in the "west" data center
$m->setReadPreference(MongoClient::RP_NEAREST, array(
array('dc' => 'east', 'use' => 'reporting'),
array('dc' => 'west'),
));
// Prefer the nearest server in the "east" data center, then a server in the
// "west" data center, and finally fall back to no tag set preference
$m->setReadPreference(MongoClient::RP_NEAREST, array(
array('dc' => 'east'),
array('dc' => 'west'),
array(),
));
?>