当前位置: 首页 > 知识库问答 >
问题:

MongoDB/ElasticSearch Query 基于组合值列表

白淇
2023-03-14

我有一个mongoDB数据库和一组歌曲。每个文档都包含标题、艺术家姓名和一些其他信息。

我的应用程序允许用户加载自己的播放列表。基本上,我最终会得到一个标题/艺术家列表,并希望将其与数据库中的内容进行匹配。如果这首歌不在我的数据库中,我会保存它,否则我会把它添加到用户的帐户中。

根据歌名和艺人价值搜索所有这些歌曲的最有效方法是什么?现在我正在循环搜索列表中的每首歌并在数据库中搜索它,但这非常耗时。(可能有数千首歌曲)。

我知道mongoDB有一个$in运算符,但我认为这对于我的问题来说还不够。
我也在使用ElasticSearch,也许有更好的方法来做我想做的事情。
谢谢。

共有1个答案

皇甫学海
2023-03-14

使用ElasticSearch,您可以轻松做到这一点。

将您的歌曲放入Elasticsearch如下:

< code > POST song collection \ data { " artist ":" artist 3 "," title": "Song1" }

然后创建一个查询以Elasic搜索播放列表中的所有歌曲

POST songscollection\data\_search
{
  "query":{
    "bool": {
     "should" : [
            {
              "bool": { 
                "must": [
                  { "match" : { "artist" : "Artist1" } },
                  { "match" : { "title" : "Song1" } }
                ]
              }
            },
            {
              "bool": {
                "must": [
                  { "match" : { "artist" : "Artist3" } },
                  { "match" : { "title" : "Song1" } }
                ]
              }
            }
        ],
        "minimum_should_match" : 1
    }
  }
}

您将获得数据库中存在的所有歌曲,并可以轻松地在代码中与用户播放列表进行映射。

 类似资料:
  • 如何根据数组的嵌套数组中的两个值参数进行查询?目标是返回具有和。 尝试了以下查询但没有成功。

  • 输入的dput() 结构(列表(Varname=structure(1:6,.标签=c(“A”,“B”,“c”,“D”,“E”,“F”),类=“因子”),成分=结构(c(3L,1L,1L,4L,2L,1L),标签=c(“”,“A,c”,“B”,“c”),类=“因子”),名字=结构(c(5L,3L,2L,4L,6L),标签=c(“”,“鲍勃”,“凯茜”,“迪克,南希”,“杰克,布鲁斯”,“曼迪”),

  • 我有一个示例数据集,如下所示 Col1 Col2 Col3 A 1,2,3 A123 A 4,5 A456 A 1,2,3 A456 A 4,5 A123 我参考了一些解决方案,并尝试了以下方法。但它只追加单个列。

  • 这看起来很容易,但却不知道该怎么做。当前数组数据是按日期和日期列出的,因此我需要将所有日期组合起来:天、月、6个月、1年。我需要将数组数据排列为下面的第二个数组。

  • 我想基于现有列中的值在我的数据框架中创建一个新列。新列的输入应为。目前,我正在尝试以下方法: 当我尝试这样做时,我得到一个ValueError,说明如下: ValueError:序列的真值不明确。使用a.empty,a.bool(), 还有别的办法吗? 我的预期输出将是由以下值组成的列:

  • 问题内容: SQL Server2005。我有一个带有ColumnA位,ColumnB int的表 我可以添加默认值,以便如果为1则为15,如果为0则为0? 我知道我可以用扳机做到这一点,但我的老板对扳机存有偏见(他需要扳机敏感性培训)。 问题答案: 如果您的ColumnB只能为15或零,则可以使其成为基于ColumnA的计算列。这是添加新的计算列的代码: