Mongodb在aray中更新现有项目的新位置,如果不存在则添加新位置

我试图使用NodeJs和MongoDb为我的应用程序实现SearchHistory .

我的数组返回:SearchHistory = [“food”,“service”,“car”]

如果我插入相同的字符串,我想将此数组中项目的位置交换到第一个位置 . 如果数组中不存在新位置,则会向第一个位置添加新内容 .

例如:如果我在我的应用程序中搜索“car”,则数组将作为SearchHistory = [“car”,“food”,“service”]返回

如果我在我的应用程序中插入书籍,将会是:SearchHistory = [“book”,“car”,“food”,“service”] .

谢谢

回答(1)

2 years ago

试试这个:

SearchHistory = ["car", "food", "service"]

newSearch = "book"

searchExistsIndex = SearchHistory.indexOf(newSearch)

if (searchExists != -1) {
    SearchHistory.splice(searchExists, 1)
    SearchHistory.splice(0, 0, newSearch)

} else {
    SearchHistory.splice(0, 0, newSearch)
}

newSearch变量是您所说的新搜索 . searchExistsIndex查看newSearch字符串是否已在列表中 . 如果不是,它将返回-1,它只会将newSearch字符串添加到数组的前面 . 如果它返回-1以外的任何内容,它将首先从列表中删除它,然后它将newSearch添加到列表的前面 .

我认为这是最简单的方法 . 我希望这就是你要找的东西 .