mongodb上的sql查询以获取多列的计数与单列的id值

Posted

技术标签:

【中文标题】mongodb上的sql查询以获取多列的计数与单列的id值【英文标题】:sql query on mongodb to get counts of multiple columns against the id value of single column 【发布时间】:2018-12-21 08:25:23 【问题描述】:

我是 mongodb 的新手。我陷入了一个问题。

我想根据包含 ID 的单个列的值来获取多列的计数。

假设对于特定的id,我有不同的列(author1author2author3、...等等)。

现在我想获取特定 id 的作者总数。

因此,我想根据该 ID 计算作者的总列数以获取计数。

这是一个好方法吗?

【问题讨论】:

为什么不为作者创建一个单列?因此,当您查询特定 ID 时,您将获得所有相关作者的结果,并且您将轻松获得计数。 实际上我有一个包含 800 万条记录的数据库,并且我已经导出了数据库中的 json 文件。作者是父表的子表的列。因此,似乎很难将所有作者列为一栏。你有什么简单的方法吗? 【参考方案1】:

一种解决方案是使用带有条件总和的聚合查询,例如:

SELECT SUM(
    CASE
        WHEN (author1 = 'id' OR author2 = 'id' OR author3 = 'id' --more columns...)  
        THEN 1 
        ELSE 0
    END
)
FROM table

归根结底,您最好使用单个列来存储作者,这样您就可以只查询该列而不是查看其中的几个。

【讨论】:

mongodb sql不支持CASE

以上是关于mongodb上的sql查询以获取多列的计数与单列的id值的主要内容,如果未能解决你的问题,请参考以下文章

对 SQL 中多列中的行计数求和的查询

DataFrame查询2 - 专用查询:索引和切片

SQL:当一列有最大/计数子查询时,我可以编写多列查询吗?

子查询(嵌套子查询)

具有多列查询单列的 Oracle 索引

如何在雪花sql中将单列拆分为多列[重复]