couchDb(1.6.1)中沒有%Like%
,但可以使用startkey和endkey。
你必須創建一個類似的看法:
function (doc) {
if (doc.type = 'myType') {
emit(doc.name, doc.name);
}
}
與名字例如people
。
例如和簡單
Designname = people
viewname = people
之後,你可以做到這一點捲曲
curl -X GET 'http://localhost:5984/db/_design/people/_view/people?startkey="foo"&endkey="foo\ufff0"'
通過這種方式,你可以找到以foo開頭的所有元素。
爲什麼\ ufff0?勾選此link
字符串範圍
如果你需要開始和結束這包括每串有 給定前綴鍵,最好是使用高價值的Unicode字符,比 使用「ZZZZ '後綴。
也就是說,而非:
startkey = 「ABC」 & endkey = 「abcZZZZZZZZZ」 你應該使用:
startkey = 「ABC」 & endkey = 「ABC \ ufff0」
如何在Symfony中做到這一點?
如果你想創建由Symfony的查看 可以在yourapp/AppBundle/CouchDocument/View/PeopleView.php
<?php
namespace yourapp\AppBundle\CouchDocument\View;
use Doctrine\CouchDB\View\DesignDocument;
class PeopleView implements DesignDocument
{
public function getData()
{
$people = <<<'JS'
function (doc) {
if (doc.type = 'myType') {
emit(doc.name, doc.name);
}
}
JS;
return array(
'views' => array(
'people' => array(
'map' => $people,
),
)
);
}
}
,並在控制器中創建視圖,你可以做這樣的事情
/**
* @Route("/testPeople/{code}", name="test_people")
* @Method({"GET"})
* @Template("myAppBundle:People:test_query.html.twig")
*/
public function testPeopleAction($code)
{
$dm = $this->container->get(
'doctrine_couchdb.odm.default_document_manager'
);
$peopleView = new PeopleView();
$client = $this->container->get('doctrine_couchdb.odm.default_document_manager');
$view = $client->createDesignDocument('people', $peopleView);
$relatedObjects = $dm->createNativeQuery('people', 'people')
->setStartKey($code)
->setEndKey($code . "\xEF\xBF\xB0")
->execute();
$a = array();
foreach ($relatedObjects as $doc) {
$a[] = $doc['value'] //it is your results
}
return array(
'results' => $a
);
}
我看到了單元測試裏面vendor/doctrine/couchdb/tests/Doctrine/Tests/CouchDB/CouchDBClientTest.php
找到有用的東西
我不知道這是最好的方式,但對我來說它的工作原理: )