我遇到了一个问题,导致我头撞墙几天。
考虑以下文件:
{
'_id': '5d7de43ac7baaa0ff2c4ae2bd000518a',
'Some Complex Name': {
'data': {
'simpleKey': [
{
'name': 'Bob',
'age': 30
},
{
'name': 'Sam',
'age': 31
},
{
'name': 'George',
'age': 20
}
]
}
}
}
在我对JavaScript的理解中,我了解到我将以下列方式引用“Some Complex Name”(在map
函数的范围内):
var stuff = this['Some Complex Name']
从那时起,我将能够使用以下内容访问名称:
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);
不幸的是,我在这方面错了,因为我收到了这样的错误
"errmsg" : "exception: map invoke failed: JS Error: TypeError: this['Some Complex Name'] has no properties nofile_b:2"
因此,我的问题是:我如何/正确/访问“某些复杂名称”键?
奖金将是一些文件来解释这一点。
谢谢!
答案 0 :(得分:0)
实际上,我刚刚找到答案,这正是我所怀疑的。
MongoDB/PyMongo: How to use dot notation in a Map function?是同一个问题,事实证明我需要过滤我的查询以确保我正在使用的文档中存在Some Complex Name
。这是通过query
到mapReduce
完成的。