2012-11-10 4 views
1

J'ai un peu un problème qui m'a fait me battre la tête contre le mur pendant quelques jours.MongoDb: Espace dans le nom de la clé?

Tenir compte le document suivant:

{ 
    '_id': '5d7de43ac7baaa0ff2c4ae2bd000518a', 
    'Some Complex Name': { 
     'data': { 
      'simpleKey': [ 
       { 
        'name': 'Bob', 
        'age': 30 
       }, 
       { 
        'name': 'Sam', 
        'age': 31 
       }, 
       { 
        'name': 'George', 
        'age': 20 
       } 
      ] 
     } 
    } 
} 

Dans ma compréhension de JavaScript, je l'ai appris que je me réfère à la « Certains Nom complexe » de la manière suivante (à partir dans le cadre d'une fonction map) :

var stuff = this['Some Complex Name'] 

bâtiment de cela, je serais en mesure d'accéder aux noms avec les éléments suivants:

var names = []; 
for (var i in this['Some Complex Name'].data.simpleKey) { 
    names.push(this['Some Complex Name'].data.simpleKey[i].name); 
} 
emit(this._id, names); 

Malheureusement, je me trompe quelque part, comme je reçois une erreur comme celle

 "errmsg" : "exception: map invoke failed: JS Error: TypeError: this['Some Complex Name'] has no properties nofile_b:2" 

Ainsi, ma question: Comment puis-je/bien/accéder à la clé "Certains Nom complexe?

Un bonus serait une documentation pour expliquer cela.

Merci!

Répondre

0

En fait, je viens de trouver la réponse et c'est exactement ce que je soupçonnais.

MongoDB/PyMongo: How to use dot notation in a Map function? était le même problème, et comme il s'avère que j'avais besoin de filtrer ma requête pour m'assurer que Some Complex Name existait dans les documents avec lesquels je travaillais. Cela a été accompli via le query à mapReduce.

Questions connexes