我有一個街道名稱列表,我想選擇所有以「Al」開頭的。 在我的MySQL我會如何MongoDB的使用PHP這樣做如何讓使用PHP的MONGODB中的「LIKE」查詢工作?
SELECT * FROM streets WHERE "street_name" LIKE "Al%"
?
我有一個街道名稱列表,我想選擇所有以「Al」開頭的。 在我的MySQL我會如何MongoDB的使用PHP這樣做如何讓使用PHP的MONGODB中的「LIKE」查詢工作?
SELECT * FROM streets WHERE "street_name" LIKE "Al%"
?
使用正則表達式:
db.streets.find({ street_name : /^Al/i });
或:
db.streets.find({ street_name : { $regex : '^Al', $options: 'i' } });
http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-RegularExpressions
談及到這個PHP:
$regex = new MongoRegex("/^Al/i");
$collection->find(array('street_name' => $regex));
參見:http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart
此外,強烈建議使用PHP的本地mongodb連接器而不是包裝。它比任何包裝都快。
$collection.find({"name": /.*Al.*/})
,或者類似的,
$collection.find({"name": /Al/})
你要找的東西,包括 「基地」 的地方(SQL的 '%' 運算符相當於正則表達式'。*'),而不是將「Al」錨定到字符串的開頭。
MongoRegex已被棄用。
使用MongoDB\BSON\Regex
$regex = new MongoDB\BSON\Regex ('^A1');
$cursor = $collection->find(array('street_name' => $regex));
//iterate through the cursor
<?php
$mongoObj = new MongoClient();
$where = array("name" => new MongoRegex("^/AI/i"));
$mongoObj->dbName->collectionName->find($where);
?>
這是我的工作例如:
<?php
use MongoDB\BSON\Regex;
$collection = $yourMongoClient->yourDatabase->yourCollection;
$regex = new Regex($text, 's');
$where = ['your_field_for_search' => $regex];
$cursor = $collection->find($where);
//Lets iterate through collection
是的,但是在PHP怎麼樣? $ database-> streets-> find(array(「street」=>「/^Al/i」)); – 2011-04-27 00:52:39
作爲一個側面的問題,這是如何比較原始速度?使用正則表達式來過濾數據集的想法讓我感到有點...在mongodb上完成新手。 – 2011-04-27 00:53:18
只要正則表達式以^開始(即匹配字符串的開頭),就會使用索引。 – ceejayoz 2011-04-27 00:55:14