使用Javascript在mongo中数组indexOf

Arrays indexOf in mongo using Javascript

本文关键字:数组 indexOf mongo Javascript 使用      更新时间:2023-09-26

我在mongodb之外的脚本中有一个数组,名为title。而且,我有一个数据集,其中包含一些字段,我不希望在mongodb中使用(dataset_1)。我正在为匹配值创建if indexOf,以便创建排名。

数据集_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仅包含美国各州而非领土。

我的最终目标是,如果与title数组匹配,则在新列中按"数字"对状态进行排序。如果没有比赛,我不希望它被排名。例如,我不希望关岛和波多黎各排名。

if (Dataset_1[column].indexOf(title) > -1) {
    execute 
}

以下是我的排名JS代码与mongodb数据集更新。

//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
...

问题出现在:

if (Dataset1.indexOf(title > -1)) {
    execute 
}

应为:if(Dataset1.indexOf(title) > -1)

编辑

你想检查状态是否在标题列表中,那么你需要有:

if(title.indexOf(doc['state']) > -1)

而不是

if (Dataset1.indexOf(title) > -1)