mongo中有一个类似于
的命令行语法db.collection.find('nested_array.some_nested_key':'some_nested_value',{'nested_array.$' => 1})
这将查找并返回与条件匹配的“nested_array”,而不是整个对象。
问题是我似乎无法在php驱动程序中找到“。$”等效物。有人有主意吗?
答案 0 :(得分:2)
MongoDB PHP驱动程序中的方法类似于它们的mongo shell对应项,因此使用 $ positional
运算符的投影也使用关联数组来映射 fields 到MongoDB查询。这样的事情会产生预期的结果:
<?php
$m = new MongoClient();
$db = $m->selectDB("test");
$collection = new MongoCollection($db, "collection_name");
// search for nested array
$fruitQuery = array("nested_array.some_nested_key" => "some_nested_value");
// projection (fields to include)
$projection = array("_id" => false, "nested_array.$" => true);
$cursor = $collection->find($query, $projection);
foreach ($cursor as $doc) {
var_dump($doc);
}
?>