【问题标题】:Text Search with Mongodb and PHP使用 Mongodb 和 PHP 进行文本搜索
【发布时间】:2015-02-03 15:35:04
【问题描述】:

是否可以通过匹配记录中的关键字或日期范围来查询mongodb?

例如,如果我有一个包含“标题”、“作者”和“日期”等字段的集合。我有这条记录,标题为“hello world”,作者为“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);

【问题讨论】:

标签: php mongodb


【解决方案1】:

您必须使用$lt/$lte(对应于 $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 提供的链接将帮助您使用关键字进行搜索。

【讨论】:

  • 谢谢,但我使用此查询检索到零记录。是因为它不适用于日期吗?也许只适用于数字?
  • 这取决于您的日期在数据库中的存储方式。如果您有时间戳,则可以使用与示例中相同的查询:$rangeQuery = array('date' =&gt; array('$gt' =&gt; 1422745200, '$lt' =&gt; 1423004400)); 但如果您存储这样的字符串:“2015-02-02”,我认为最好的方法是先将其转换为时间戳并制作之后的查询。
猜你喜欢
  • 2016-08-23
  • 2013-04-06
  • 2014-11-19
  • 1970-01-01
  • 2019-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多