��ȡ��ѡ��

MongoDB 2.2 �� 1.3.0 �汾������������֧�� » ��ȡ��ѡ��, ������ָ��������ѯMongoDB���Ƽ�. ��ȡ��ѡ����ܱ�ָ���������ϣ����߿��ϣ������Ǽ�����. ��ѡ��涨Ĭ��Ҫ���϶��µļ̳� (�ٸ����� MongoCollection ���̳���Ӧ�� MongoDB ʵ���Ķ�ȡ��ѡ��).

��ȡ��ѡ����ģʽ�ͱ�ǩ�����ϵ�. ģʽ����mongod������Ȩ, �� » ��ǩ�� Ϊmongodʵ���ϸ�ָ���˱�׼��ֻ����Щping������mongdʵ��ʱ����15�����ڵ�Mongodʵ���Ǻϸ�ġ�

��ȡ��ѡ��ģʽ

Warning

���еĶ�ȡ��ѡ����ܷ��شӽڵ�����ڵ���ʱ�ĵ����ݣ�������ѡ��MongoClient::RP_PRIMARY������㲻ʹ��MongoClient::RP_PRIMARY.ģʽ����ȷ�����Ӧ�ÿ������̹�ʱ�����ݡ�

  • MongoClient::RP_PRIMARY

    ���еĶ�������ʹ�����ڵ�. Ĭ����������������ڵ㲻���ã�������������һ���쳣��

    ���ģʽ��ʹ�ñ�ǩ�����ͻ. һ����ǩ��ָ��Ϊ MongoClient::RP_PRIMARY ������һ���쳣��

  • MongoClient::RP_PRIMARY_PREFERRED

    �ڴ���������, ��ȡ��������ڵ�. ���ǣ�������ڵ㲻����, ����ת���ڼ�, ���Ӵӽڵ��ȡ���ݡ�

    ����ȡ��ѡ�����һ����ǩ��, �ͻ������ȴ����ڵ��ȡ, ������ã�ȥ�ӽڵ�ƥ���ǩ. ����ӽڵ�û��ƥ�䵽��ǩ, ������������һ���쳣��

    Warning

    2.2�汾��mongos��������ȫ֧�ֶ�ȡ��ѡ��ܡ������ӵ�mongosʵ��ʱ, MongoClient::RP_PRIMARY_PREFERRED�����Ͳ�ѯ���ӽڵ�.

  • MongoClient::RP_SECONDARY

    �������������͸��ӽڵ�. ���û�дӽڵ���ã�������һ���쳣.

    ��������Ƽ�������һ���ӽڵ�, ���ǿ���û�п��õĴӽڵ㡣�ٸ����ӣ���һ���ڵ��һ�ӽڵ�, ����һ���ٲýڵ㣬����û�������ӽڵ��ˣ��ӽڵ㴦�ڹ���ת�ƽ׶λ��߲����õ�ʱ��

    ����ȡ��ѡ������˱�ǩ��, �ͻ��������ҵ�ƥ���ǩ�Ĵӽڵ㣬ֱ�Ӷ�һ���ӽڵ㡣���û��ƥ���ǩ�Ĵӽڵ㣬������һ���쳣

  • MongoClient::RP_SECONDARY_PREFERRED

    ���������£��Ӵӽڵ��ȡ����ֻ�����ڵ������£���ȡ���ڵ�

    ����ȡ��ѡ������˱�ǩ��, �ͻ��������ҵ�ƥ���ǩ�Ĵӽڵ㣬ֱ�Ӷ�һ���ӽڵ㡣���û��ƥ���ǩ�Ĵӽڵ㣬������һ���쳣.

  • MongoClient::RP_NEAREST

    ���������ȡһ��pingʱ�����15����Ľڵ㡣ʹ�� MongoClient::RP_NEAREST ģʽ�Ļ�����ȡ���ܷ��������ڵ���ߴӽڵ㡣

    �������ģʽ�Ļ����������ᷢ����������ʱС�Ľڵ㣬�����Ƕ�ȡ�������ǹ�ʱ�Ļ������µġ�

    ����ȡ��ѡ������˱�ǩ��, �ͻ��������ҵ�ƥ���ǩ�Ľڵ㣬ֱ�Ӷ�һ������������ڵ㡣

    Note:

    �Ը��Ƽ��Ķ������������ڷ����ض�����ѡ�������Ľڵ㡣 MongoClient::RP_NEAREST ģʽ���ȡ���ڵ�ʹӽڵ��״̬���ҵ���ʱ�͵Ľڵ�����ȡ��

��ǩ��

» ��ǩ���������Զ���������Ѷ�����ָ���ض��Ľڵ㡣��ǩ��ʹ���������������Ϊ���ܣ�������ָ���ض������ݽڵ����ָ����mongodʵ����ָ�����͵IJ���ʹ�ã������¼��־���߷�����־��

�����ָ����ǩ��������Ķ�ȡ��ѡ��ģʽ��

  • MongoClient::RP_PRIMARY_PREFERRED

  • MongoClient::RP_SECONDARY

  • MongoClient::RP_SECONDARY_PREFERRED

  • MongoClient::RP_NEAREST

�㲻��ָ����ǩ���� MongoClient::RP_PRIMARY ��ȡ��ѡ��ģʽ��ֻ��ѡ����һ���ӽڵ㣬��ǩ�����ã����������ģʽ��

����Ķ�ȡ��ѡ��

��ȡ��ѡ�����ָ������URI�� MongoClient::__construct(), ʹ�ò�ѯ���﷨����ʹ�ñ�ǩ���������﷨���ݸ�����������÷�����

��ij����ȡ��ѡ��ʹ���˲�ѯ���� ��ǩ���� readPreferenceTagsֵӦ���Ƕ��ŷָ�����һ��ð�����ӵļ�ֵ�ԡ�

Note:

ÿһ����ѯ������ı�ǩ����ʹ�� readPreferenceTags ����. ����php����URL��ѯ���ķ�ʽ��readPreferenceTags������ֵ�໥�����ǡ�����������˳���ñ�ǩ����

Warning

��������Ҳ���һ��ƥ��ı�ǩ������ȡ��ʧ�ܣ� ���������ṩ���ʵĻ��ˣ���յ� 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(),
));
?>