arama nasıl yapılır - örneğin John Smith veya John Henry Harry Smith eşleşecektir sqlyapmak YA ben kısmi ve soyadınız maç aramak istediğiniz
f_name LIKE J% OR l_name LIKE S%
içinde. Ben "$ veya" operatörü kullanmanız gerekebilir varsayıyorum
,
Ben daha düzgün GİBİ% parçasını yapıyor inanıyoruz bu var, ama bir "AND" araması yapıyor inanıyoruz (o anlamına f_name gİBİ J% arar ve sadece John Smith eşleşir, böylece LIKE S% L_NAME):
$name1="J";
$name2="S";
$cursor = $this->clientCollection->find(array('f_name' => new MongoRegex('/^'.$name1.'/i'), 'l_name' => new MongoRegex('/^'.$name2.'/i')));
Not: Bu
MongoRegex('/'.$name1.'/i')
Bu olacak J%% olarak ihtiva eden eşleşir eşleşme ile başlar
array('$or' => array(
array('f_name' => new MongoRegex('/'.$name1.'/i')),
array('l_name' => new MongoRegex('/'.$name2.'/i'))
));
Düzenleme: temelde sadece mevcut sorguya etrafında başka bir diziyi sarmak gerekir böylece J% olarak olarak (fark^eklendi)
MongoRegex('/^'.$name1.'/i')
, ama sadece dizi aramaların neden iç set merak ediyorum? Orijinal kod çalışır, bir AND olarak kayıtları döndürür. Kodu değiştirerek kullanmayı denedim: \t $ cursor = $ this-> clientCollection-> find (array (dizi) ('f_name' => new MongoRegex ('/' .$ name1. '/ I')), array ('l_name '=> yeni MongoRegex (' /'.$ adı2. '/ i')))); ve işe yaramıyor, ama sizin durumunuzda '$ veya' ile yapıyor. –
Burada neler olduğunu açıklamaya çalıştım. Ne yazık ki, tüm bu PHP 'array()' ler, özellikle bir bakışta, PHP'de bir Mongo sorgusunda neler olduğunu anlatmak oldukça zorlaştırabilir. –