【发布时间】:2017-09-29 21:31:00
【问题描述】:
我想在任何嵌套的 json 中获取所有具有特定单词的文档。集合中的文档如下所示;
Man:{
First name: 'F-Name'
Last name: 'L-Name'
hobbies:{
sports:'cricket'
watching: 'films'
}
Likeness:{
name: 'F-name'
fruit: 'chikoo'
}
}
并且集合中有多个这样的文档。
例如,我想查找所有包含单词F-name 的文档。见上面的json。 F-name 在 2 个嵌套的 json 中。但它可以只有一个或多个。什么是查找所有文档而不是提供任何字段或嵌套 Json 名称(在上述情况下为名字、相似度-> 名称)的快速而智能的方法。有什么办法吗?
$mng = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$filter = [ ?? ];
$query = new MongoDB\Driver\Query($filter);
$res = $mng->executeQuery("Database.myName", $query);
编辑 1 根据@Shail Paras 的建议,我运行以下代码;
<?php
$mng = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$query = new \MongoDB\Driver\Query(['createIndex' => ['*' => 'text']]);
$res = $mng->executeQuery("BBC_Database.BBC", $query);
$filter = ['$text' => ['$search' => "\"F-name\""]];
$query1 = new MongoDB\Driver\Query($filter);
$cursor = $mng->executeQuery("Database.Col", $query1);
$filteredData = iterator_to_array($cursor);
echo "<pre>";
print_r($filteredData);
?>
但它给了;
致命错误:在 C:\wamp64\www-------filename.php 第 7 行中未捕获异常 'MongoDB\Driver\Exception\RuntimeException' 并带有消息 'text index required for $text query'
根据错误,什么是文本索引?
【问题讨论】:
标签: php mongodb mongodb-query