我有一个使用大型MongoDB集合的PHP Web应用程序。每个Mongo文档都有一个_type
字段,可以是red
,green
或blue
。我有用户提供的标准:groupName = "paint"
- 我需要返回与文件groupName = "paint"
相关联的所有密钥的列表。这是我的查询:
$map = new MongoCode('
function(){
var keys = [];
Object.keys(this).forEach(function(k){
if(k != "_id" && k != "_type"){
keys.push(k);
}
})
emit(this.type,{"keys":keys});
}
');
$reduce = new MongoCode('
function(key,values){
var uniqueKeys = {};
var result = [];
values.forEach(function(value){
value.keys.forEach(function(k){
if(!uniqueKeys[k]){
uniqueKeys[k] = 1;
result.push(k);
}
})
})
return {"keys":result};
}
');
$keyName = "groupName";
$keyValue = "paint";
$commandOutput = $db->command(array(
'mapreduce' => 'searchCollection', // collection name
'map' => $map,
'reduce' => $reduce,
'query' => array($keyName => $keyValue),
"out" => 'groupNameKeysCollection' // outputting to a collection
));
这非常好用,但我需要知道每个被吐出的密钥的_type
的值。我怎样才能确定返回的每个键?