PHP MongoDB驱动程序仅查询集合中所有文档的特定字段

时间:2017-06-01 08:05:00

标签: php mongodb

好的,伙计们。正如大多数人可能知道的那样,有一个用于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"子集而不仅仅是过滤后的子集):

  1. $filters = ["conn.name" => new MongoDB\BSON\Regex($name,'i')]; $options = ["projection" => ["_id" => 0,"conn" =>1];
  2. $filters = ["conn" => ["\$all" =>["name" => new MongoDB\BSON\Regex($name,'i')]]]; $options = ["projection" => ["_id" => 0,"conn" =>1];
  3. $filters = ["conn.name" => '/'.$name.'/i']; $options = ["projection" => ["_id" => 0,"conn" =>1];
  4. 注意:我使用的是PHP 7和最新的mongod PECL扩展程序

0 个答案:

没有答案