Ama*_*mar 6 php mongodb mongodb-query
我想在任何嵌套的json中获取具有特定单词的所有文档.集合中的文档看起来像这样;
Man:{
First name: 'F-Name'
Last name: 'L-Name'
hobbies:{
sports:'cricket'
watching: 'films'
}
Likeness:{
name: 'F-name'
fruit: 'chikoo'
}
}
Run Code Online (Sandbox Code Playgroud)
收集中有多个这样的文件.例如,我想找到所有有文字的文件F-name.见上面的json.F-name在2个嵌套的jsons中.但它可以只有一个或多个.什么是快速和智能的方式来查找所有文档而不是给出任何字段或嵌套的Json名称(在上面的例子中,名字,相似 - >名称).有什么办法吗?
$mng = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$filter = [ ?? ];
$query = new MongoDB\Driver\Query($filter);
$res = $mng->executeQuery("Database.myName", $query);
Run Code Online (Sandbox Code Playgroud)
编辑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);
?>
Run Code Online (Sandbox Code Playgroud)
但它给出了;
致命错误:第7行的C:\ wamp64\www ------- filename.php中未捕获的异常'MongoDB\Driver\Exception\RuntimeException',消息'$ text query需要文本索引'
什么是文本索引根据错误?
好的..这是文本搜索的错误,因为文本搜索仅在创建索引的情况下才有效,而且我认为您的索引部分不起作用。这就是它抛出该异常的原因。我很抱歉这么着急。但这是你的解决方案:
步骤1:使用命令在所有文档中创建索引
$manager = new MongoDB\Driver\Manager("mongodb://127.0.0.1:27017");
$command = new MongoDB\Driver\Command([
"createIndexes" => "Col",
"indexes" => [[
"name" => "indexName",
"key" => ["$**" => "text"],
"ns" => "Database.Col",
]],
]);
$result = $manager->executeCommand("Database", $command);
var_dump($result->toArray()); // this will show u indexing result
Run Code Online (Sandbox Code Playgroud)
第 2 步:运行您的查询
$filter = ['$text' => ['$search' => "\"F-name\""]];
$query1 = new MongoDB\Driver\Query($filter);
$cursor = $manager->executeQuery("Database.Col", $query1);
$filteredData = iterator_to_array($cursor);
echo "<pre>";
print_r($filteredData);
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助您,如果有帮助,请不要忘记阅读以下文章:
| 归档时间: |
|
| 查看次数: |
871 次 |
| 最近记录: |