我在mongodb外部有一个名为title的脚本数组。而且,我有一个包含一些字段的数据集,我不想在mongodb中使用(Dataset_1)。我正在为匹配值创建一个if indexOf,以便创建一个排序。
Dataset_1看起来是这样的。
geotype state numbers
state Alabama 14
state Alaska 344
state California 144
state New York 255
state Washington 233
state Guam 255
state Puerto Rico 36
state Virgin Islands 366
state Delaware 434
state New Mexico 444
state Maryland 544
...var title如下所示
var title = [
'Alabama',
'Alaska',
'California',
'New York',
'Washington',
'Delaware',
'New Mexico',
'Maryland'
...] 如果您注意到var title,只拥有美国各州,而不是领土。
我的最终目标是在一个新的列‘排名’中按'numbers‘对状态进行排序,如果与标题数组匹配的话。如果没有匹配,我不希望它被排名。例如,我不希望关岛和波多黎各排名。
if (Dataset_1[column].indexOf(title) > -1) {
execute
}以下是我在mongodb dataset更新中的排名JS代码。
//This is my script which also contains var title.
var rank = 0;
var rank_value = Infinity;
db.Dataset_1.find({'geo_type': 'state'}).sort({'numbers': -1}).forEach(function(doc){
if (doc['state'].indexOf(title) > -1) {
if (doc['numbers'] < rank_value) {
rank_value = doc['numbers'];
rank = rank + 1;
}
if (doc['numbers'] != null) {
db.Dataset_1.update({
'_id' : doc['_id']
},{$set: {
'ranking' : rank
}})
}
}
});此代码对所有字段进行排序,而不考虑我设置的indexOf。我是否正确地执行了indexOf函数?
我尝试过很多不同的方法。要么是语法错误,要么是不想要的字段。
总之,这里是一个示例输出。
geotype state numbers ranking
state Alabama 14 11
state Alaska 344 5
...发布于 2016-04-21 03:30:26
问题在于:
if (Dataset1.indexOf(title > -1)) {
execute
}应该是:if(Dataset1.indexOf(title) > -1)
编辑
要检查状态是否位于标题列表中,则需要:
if(title.indexOf(doc['state']) > -1)而不是
if (Dataset1.indexOf(title) > -1)https://stackoverflow.com/questions/36759019
复制相似问题