2015-02-03 2 views
0

키워드 또는 레코드의 날짜 범위를 일치시켜 mongodb를 쿼리 할 수 ​​있습니까?Mongodb 및 PHP로 텍스트 검색

예를 들어 "제목", "저자"및 "날짜"와 같은 필드가있는 모음이있는 경우. 나는 제목이 "안녕하세요 세상"으로, 저자는 "존 빌리"로, 날짜는 "2014/05/12"로이 기록을 가지고 있습니다.

은 어떻게 얻을 내 쿼리를 작성해야한다 "세계"또는 "빌리"또는 날짜 범위 (2014년 6월 12일에 2014년 1월 12일) 중 하나를 입력하여이 레코드를 반환 할 수 있나요 내가 원하는 레코드?

미리 감사드립니다. 아래

는 날짜 기간 내 코드입니다 : $ from_Id 인

 $rangeQuery = array('timestamp' => array('$gte' => $from_Id, '$lte' => $to_Id)); 

     $cursor = $collection->find($rangeQuery); 
+2

아래 링크는 귀하를 도울 수 있습니다 : http://stackoverflow.com/questions/3305561/how-to-query-mongodb-with-like – sachin

+0

Thank you! 그것은 잘 작동합니다! – hao

답변

1

당신은 (>>/대응/$lte$lt가와 $gt/$gte (</< =에 해당)를 사용해야합니다 =) 연산자를 사용하여 쿼리에서 날짜 범위를 설정합니다. 그냥 MongoDB의 문서를 찾아 : 여기

http://docs.mongodb.org/manual/reference/operator/query-comparison/

는 PHP는 문서에서 예 ( http://php.net/manual/en/mongocollection.find.php)입니다 :

<?php 

$m = new MongoClient(); 
$db = $m->selectDB('test'); 
$collection = new MongoCollection($db, 'phpmanual'); 

// search for documents where 5 < x < 20 
$rangeQuery = array('x' => array('$gt' => 5, '$lt' => 20)); 

$cursor = $collection->find($rangeQuery); 
foreach ($cursor as $doc) { 
    var_dump($doc); 
} 

?> 

@SaTya에 의해 주어진 링크가 키워드 검색을하는 데 도움이됩니다 .

+0

감사합니다.하지만이 쿼리를 사용하여 레코드를 검색했습니다. 그것은 날짜와 작동하지 않기 때문입니까? 어쩌면 숫자로만 작업 할 수 있을까요? – hao

+0

날짜가 데이터베이스에 저장되는 방법에 따라 다릅니다. 타임 스탬프가있는 경우 예제와 동일한 쿼리를 사용할 수 있습니다 : '$ rangeQuery = array ('date'=> array ('$ gt'=> 1422745200, '$ lt'=> 1423004400)); ' 다음과 같은 문자열을 저장하는 경우 : "2015-02-02"가장 좋은 방법은 먼저 타임 스탬프로 변환하고 이후에 쿼리를 만드는 것입니다. – magon

+0

감사합니다. – hao

관련 문제