Текстовый поиск с Mongodb и PHP

0

Можно ли запросить mongodb путем сопоставления ключевых слов или диапазона дат в записи?

Например, если у меня есть коллекция с такими полями, как "Заголовок", "Автор" и "Дата". У меня есть эта запись с названием "мир привет", автор "john billy", дата "2014/05/12".

Можно ли вернуть эту запись, введя "мир" или "билли" или диапазон дат (2014/01/12 - 2014/06/12)

Как написать мой запрос, чтобы получить запись, которую я хочу?

Заранее спасибо!

ниже мой код для даты: $ from_Id - это

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

        $cursor = $collection->find($rangeQuery);
  • 2
    Ниже ссылка может помочь вам: stackoverflow.com/questions/3305561/…
  • 0
    Спасибо! Работает просто отлично!
Теги:

1 ответ

1
Лучший ответ

Вам нужно будет использовать $lt/$lte (соответствуют </<=) и $gt/$gte (соответствуют>/> =) операторам, чтобы задать диапазон дат в вашем запросе. Просто найдите документацию mongodb:

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

Вот пример из php doc (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
    Спасибо, но я получил нулевую запись, используя этот запрос. Это потому что не работает с датой? может работать только с номером?
  • 0
    Это зависит от того, как ваши даты хранятся в вашей базе данных. Если у вас есть временные метки, вы можете использовать тот же запрос, что и в примере: $rangeQuery = array('date' => array('$gt' => 1422745200, '$lt' => 1423004400)); Но если вы храните строку, подобную этой: «2015-02-02», я думаю, что лучший способ - сначала преобразовать ее в метку времени, а затем выполнить запрос.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню