Précédent   Forum des professionnels en informatique > Bases de données > Autres SGBD
Autres SGBD Vos questions sur les autres SGBD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/10/2011, 13h41   #1
Membre régulier
 
Avatar de FrontLine
 
Nicolas
Webmaster
Inscription : janvier 2008
Messages : 172
Détails du profil
Informations personnelles :
Nom : Nicolas
Âge : 30

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : janvier 2008
Messages : 172
Points : 84
Points : 84
Par défaut MongoDB MapReduce : Réduce est inutile ?

Bonjour,

j'essaye de faire un mapReduce pour obtenir uniquement une entrée d'un sous-document (un commentaire d'un post) et bizarrement ça marche sans "reduce". Malgré des heures de recherche et de fouinage dans les docs et exemples en anglais, je ne comprends pas la logique.

Quoi que je fasse dans la fonction "reduce", il ne se passe rien du tout.

Un document :
Code :
1
2
3
4
5
6
7
8
9
10
11
user_id: MongoId,
title: 'blabla',
article: 'mon article',
comments: {
"0": {
entry_id: 'test',
text: 'texte du commentaire'
},
 
"1": { ... }
}
Le code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Map
$map = new MongoCode('function() 
{
	for (var com in this.comments) {
		if(this.comments[com].entry_id == entry_id)
			emit(this.user_id, {comment:this.comments[com],entry_id:entry_id});
	}
 
}', array('entry_id' => 'test'));
 
// réduce (qui ne sert à rien mais si je le retire la requête ne passe pas (génère une Mongo exception)
$reduce = new MongoCode('function(key,val)
{
return "plop";
}');
 
// La commande
$command = array(
	'mapreduce' => 'posts',
	'map' => $map,
	'reduce' => $reduce,
	'query' => array('_id' => $T->doc->_id),
	'out' => array('inline' => 1),
	'verbose' => true // debug infos
);
$result = $Blog->db->command($command);
 
var_dump($result);
Résultat du var_dump() :
Citation:
array
'results' =>
array
0 =>
array
'_id' =>
object(MongoId)[30]
...
'value' =>
array
...
'timeMillis' => int 22
'timing' =>
array
'mapTime' => float 0
'emitLoop' => int 22
'reduceTime' => float 0
'mode' => string 'mixed' (length=5)
'total' => int 22
'counts' =>
array
'input' => int 1
'emit' => int 1
'reduce' => int 0
'output' => int 1
'ok' => float 1
Quelqu'un pourrait m'éclairer svp ?
FrontLine est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h31.


 
 
 
 
Partenaires

Hébergement Web