好的,伙计们。正如大多数人可能知道的那样,有一个用于PHP 7的新MongoDB驱动程序。我正在尝试。我在这里遇到了这个问题:
有这样的集合:
{
"_id" : ObjectId("592d026e2a5e742704e60055"),
"name" : "One",
"conn" : [
{
"_id" : ObjectId("592d03cd3c83d5265c004d0b"),
"name" : "MongoDB Fans",
"comments" : "nice!"
},
{
"_id" : ObjectId("592d06513c83d5265c004d17"),
"name" : "SQL Fans",
"comments" : "not so nice!"
}
]
},
{
"_id" : ObjectId("592d0eec2a5e742704e60056"),
"name" : "Two",
"conn" : [
{
"_id" : ObjectId("592d0ef13c83d5265c004d37"),
"name" : "Cassandra Fans",
"comments" : "spooky!"
}
]
}
现在,我想要实现的是: 1.找到所有" conn"字段(不论它们属于哪个文档)包含用户输入(例如" xyz")" name"作为子串。 2.预测选定的" conn"领域。
我尝试过使用以下过滤器和选项但没有成功(几乎所有这些都返回所有" conn"子集而不仅仅是过滤后的子集):
$filters = ["conn.name" => new MongoDB\BSON\Regex($name,'i')];
$options = ["projection" => ["_id" => 0,"conn" =>1];
$filters = ["conn" => ["\$all" =>["name" => new MongoDB\BSON\Regex($name,'i')]]];
$options = ["projection" => ["_id" => 0,"conn" =>1];
$filters = ["conn.name" => '/'.$name.'/i'];
$options = ["projection" => ["_id" => 0,"conn" =>1];
注意:我使用的是PHP 7和最新的mongod PECL扩展程序