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