【发布时间】:2018-02-23 01:47:43
【问题描述】:
执行一个模拟“like/mysql”的查询,以团队名称搜索团队
团队文档结构
{
"_id": 9,
"name": "azerty",
"tag": "dsfds",
"desc": "ggdfgsdfgdfgdf",
"captain": 8,
"coach": 8,
"members": [{
"date_joined": "2016-03-31 15:22:09",
"user_id": 8
}, {
"date_joined": "2016-03-31 19:22:35",
"user_id": 9
}],
"current_invites": [{
"invite_id": 21,
"username": "Nikki",
"user_id": "9",
"status": 1,
"date_invited": "2016-03-31 18:32:40"
}, {
"invite_id": 22,
"username": "Nikki",
"user_id": "9",
"status": 2,
"date_invited": "2016-03-31 18:33:16"
}]
}
PHP 代码 =
$q = '/.*'.$q.'*./';
$result = $this->coll->aggregate(
array('$match' => array('name' => $q)),
array('$project' => array('name' => 1,'members' => array('$size' => '$members'))));
感觉我快疯了,不知道如何解决这个问题。 在迁移到 mongo 之后使用过正则表达式,但没有使用 agg-match 的组合。
【问题讨论】:
-
这就是你要找的东西:stackoverflow.com/questions/16252208/…
-
找到适合我情况的帖子并使用'new MongoRegex($q)'解决了我的问题
-
对于那些在用 php 制作 mongo 正则表达式时磕磕绊绊的人,选项应该与正则表达式模式分开。像
['$match' => ['$regex' => '^' . $pattern . '.*', '$options' => 'i']]这样的东西。更多详情stackoverflow.com/questions/16252208/…