首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Javascript实现mongo中的数组indexOf

使用Javascript实现mongo中的数组indexOf
EN

Stack Overflow用户
提问于 2016-04-21 03:23:02
回答 1查看 1.7K关注 0票数 0

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

Dataset_1看起来是这样的。

代码语言:javascript
复制
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如下所示

代码语言:javascript
复制
var title = [            
'Alabama',         
'Alaska',           
'California',       
'New York',         
'Washington',       
'Delaware',         
'New Mexico',       
'Maryland'
...]         

如果您注意到var title,只拥有美国各州,而不是领土。

我的最终目标是在一个新的列‘排名’中按'numbers‘对状态进行排序,如果与标题数组匹配的话。如果没有匹配,我不希望它被排名。例如,我不希望关岛和波多黎各排名。

代码语言:javascript
复制
if (Dataset_1[column].indexOf(title) > -1) {
    execute 
}

以下是我在mongodb dataset更新中的排名JS代码。

代码语言:javascript
复制
//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函数?

我尝试过很多不同的方法。要么是语法错误,要么是不想要的字段。

总之,这里是一个示例输出。

代码语言:javascript
复制
geotype    state     numbers    ranking
state      Alabama   14         11
state      Alaska    344        5
...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-21 03:30:26

问题在于:

代码语言:javascript
复制
if (Dataset1.indexOf(title > -1)) {
    execute 
}

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

编辑

要检查状态是否位于标题列表中,则需要:

代码语言:javascript
复制
if(title.indexOf(doc['state']) > -1)

而不是

代码语言:javascript
复制
if (Dataset1.indexOf(title) > -1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36759019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档