$database->find(array('value'=>'İngiltere'));
MongoDBクラスにはfind()
メソッドがありません。MongoCollectionインスタンスですか?$database
UTF-8 エンコーディングで問題が発生している可能性があります (関連するディスカッションについては、この回答を参照してください) が、共有した 3 つの文字列はすべて適切にエンコードされているようです。UTF-8 文字列を使用すると、上記の値を挿入してクエリを実行しても問題はありません。次のコード例を検討してください。
$values = ['İngiltere', 'İtalya', 'Şampiyona'];
$m = new MongoClient();
$c = $m->test->foo;
$c->drop();
foreach ($values as $value) {
printf("Testing value: %s\n", $value);
printf("Detected encoding: %s\n", mb_detect_encoding($value));
$c->insert(['x' => $value]);
var_dump($c->findOne(['x' => $value]));
echo "\n";
}
これにより、システムで次の出力が生成されます。
Testing value: İngiltere
Detected encoding: UTF-8
array(2) {
'_id' =>
class MongoId#6 (1) {
public $$id =>
string(24) "5213d027e84df17727ca7985"
}
'x' =>
string(10) "İngiltere"
}
Testing value: İtalya
Detected encoding: UTF-8
array(2) {
'_id' =>
class MongoId#5 (1) {
public $$id =>
string(24) "5213d027e84df17727ca7986"
}
'x' =>
string(7) "İtalya"
}
Testing value: Şampiyona
Detected encoding: UTF-8
array(2) {
'_id' =>
class MongoId#4 (1) {
public $$id =>
string(24) "5213d027e84df17727ca7987"
}
'x' =>
string(10) "Şampiyona"
}