如何让“喜欢” MongoDB 中的查询工作?

发布于 2024-11-03 09:15:15 字数 162 浏览 5 评论 0原文

我有一个街道名称列表,我想选择所有以“Al”开头的名称。 在我的 MySQL 中,我会做类似

SELECT * FROM streets WHERE "street_name" LIKE "Al%"

使用 PHP 的 MongoDB 怎么样?

I have a list of street names and I want to select all that start with "Al".
In my MySQL I would do something like

SELECT * FROM streets WHERE "street_name" LIKE "Al%"

How about MongoDB using PHP?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

送君千里 2024-11-10 09:15:15

使用正则表达式:

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));

Use a regular expression:

db.streets.find( { street_name : /^Al/i } );

or:

db.streets.find( { street_name : { $regex : '^Al', $options: 'i' } } );

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-RegularExpressions

Turning this into PHP:

$regex = new MongoRegex("/^Al/i");
$collection->find(array('street_name' => $regex));
耳钉梦 2024-11-10 09:15:15

请参阅: http://www.mongodb.org/display/DOCS /SQL+to+Mongo+Mapping+Chart

另外,强烈建议仅使用 PHP 的本机 mongodb 连接器而不是包装器。它比任何包装器都要快得多。

http://php.net/class.mongodb

See: http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart

Also, highly recommend just using the native mongodb connector from PHP instead of a wrapper. It's way faster than any wrapper.

http://php.net/class.mongodb

岁吢 2024-11-10 09:15:15

这是我的工作示例:

<?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

here is my working example:

<?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
时光是把杀猪刀 2024-11-10 09:15:15

$collection.find({"name": /.*Al.*/})

或类似的

$collection.find({"name": /Al/}) code>

您正在寻找在某处包含“Al”的内容(SQL 的“%”运算符相当于正则表达式“.*”),而不是在字符串开头锚定“Al”的内容。

$collection.find({"name": /.*Al.*/})

or, similar,

$collection.find({"name": /Al/})

You're looking for something that contains "Al" somewhere (SQL's '%' operator is equivalent to regexps' '.*'), not something that has "Al" anchored to the beginning of the string.

伴我心暖 2024-11-10 09:15:15

MongoRegex 已被弃用。
使用 MongoDB\BSON\Regex

$regex = new MongoDB\BSON\Regex ( '^A1');
$cursor = $collection->find(array('street_name' => $regex));
//iterate through the cursor

MongoRegex has been deprecated.
Use MongoDB\BSON\Regex

$regex = new MongoDB\BSON\Regex ( '^A1');
$cursor = $collection->find(array('street_name' => $regex));
//iterate through the cursor
盛装女皇 2024-11-10 09:15:15
<?php
$mongoObj = new MongoClient();
$where = array("name" => new MongoRegex("^/AI/i"));
$mongoObj->dbName->collectionName->find($where);
?>

查看更多详情

<?php
$mongoObj = new MongoClient();
$where = array("name" => new MongoRegex("^/AI/i"));
$mongoObj->dbName->collectionName->find($where);
?>

View for more details

早茶月光 2024-11-10 09:15:15

你也可以做这样的事情

['key' => ['$regex' => '(?i)value']]

You can also do something like this

['key' => ['$regex' => '(?i)value']]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文