标签: array

数组中的MongoDB更新对象

我有以下文件:

{
    "name" : "student_1",
    "courses" : [
        {
            "name" : "Algebra",
            "grades" : [ 98, 96, 92 ]
        },
        {
            "name" : "Computers",
            "grades" : [ 80 ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

如何更新指定课程的成绩?例如,我想将课程中Algebra的某些测试增加10 分。

mongodb array json

3
推荐指数
1
解决办法
2万
查看次数

PostgreSQL - 按索引对数组求和

我在 PostgreSQL 中有一个 doubles 列(double precision[])的数组,它可以保留一天的半小时值。所以每个数组都有 48 个值。我需要一个有效的查询,它按索引对所有这些数组列求和,并生成一个新的 48 数组索引,如下所述

A = double[48] = {3,2,0,3....1}
B = double[48] = {1,0,3,2....5}

RESULT = double[48] = {A[0] + B[0], A[1] + B[1],...,A[47] + B[47]}
Run Code Online (Sandbox Code Playgroud)

谢谢!

postgresql performance array postgresql-performance

2
推荐指数
1
解决办法
2936
查看次数

带有逗号分隔字符串的 Postgres 查询列,用于字符串数组

我有一个表,其中包含如下所示的数据:

id  oe
--  ---------------------------------------------------
 1  04715SNAA90,04715SNAA90ZZ,71501SNAA00,71501SNAA00ZZ
 2  64526915083,64526953474
 3  04715SNAA90,04715SNAA90ZZ,71501SNAA00,71501SNAA00ZZ
 4  F4DH8C607AA,F4DHAA
 5  F4DH8C607AA,F4DHAA
 6  04715SNAA90,04715SNAA90ZZ,71501SNAA00,71501SNAA00ZZ
 7  64526915083,64526953474
 8  F4DH8C607AA,F4DHAA
 9  F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
10  F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
11  04715SNAA90,04715SNAA90ZZ,71501SNAA00,71501SNAA00ZZ
12  64526915083,64526953474
13  F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
14  F4DH8C607AA,F4DHAA
15  F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
Run Code Online (Sandbox Code Playgroud)

如何编写查询,在其中传递值数组并返回该列包含数组中任何值的行?

这是有效的,因为我从查找表中获得了另一个值,而我宁愿不这样做,因为表中的hol列上没有索引pubnet
[请不要建议添加一个,因为我无法修改数据库]

SELECT * FROM pubnet 
where hol in (select hol from id2hol where id in ('F3DH19860AA', 'F4DHAA'))
Run Code Online (Sandbox Code Playgroud)

这将是结果集:

id  oe
--  ---------------------------------------------------
 4  F4DH8C607AA,F4DHAA
 5  F4DH8C607AA,F4DHAA
 8  F4DH8C607AA,F4DHAA
 9  F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
10  F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
13  F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
14  F4DH8C607AA,F4DHAA
15  F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
Run Code Online (Sandbox Code Playgroud)

postgresql array

2
推荐指数
1
解决办法
2万
查看次数

从布尔列构建数组

我有诸如role1role2role3等列。它们都是布尔值。

\n\n

我想在此表上创建一个视图,该视图具有类型为 的角色列text[]。如果有列TRUE, FALSE, TRUE,则视图将包含["role1", "role3"].

\n\n

有什么好的方法可以做到这一点,并且不会爆炸成大量的CASE WHEN\xc2\xb4s 吗?澄清一下,我可以使用 O(n) CASE WHEN,但不能使用 O(2^n) ,这是目前似乎需要的。:)

\n

postgresql array unpivot

2
推荐指数
1
解决办法
1135
查看次数

将表数组作为参数传递给 postgresql 中的 upsert 函数

我有一个运行良好的 UPSERT 函数,但我批量更新和插入记录,可以修改此函数,以便我将所有记录作为数组传递给此函数,然后它将作为一个事务一次性插入/更新所有记录? 如果记录号 x 失败,它应该回滚撤消在 x 之前插入/更新的任何记录?这是我的 upsert 函数:

CREATE OR REPLACE FUNCTION save_weights(rec tbl_weightment)
  RETURNS text AS
$BODY$
DECLARE 
myoutput text :='Nothing has occured';
BEGIN

    update tbl_weightment set 
    vname=rec.vname,
    iquality=rec.iquality,
    vhooks=rec.vhooks,
    tstamp=rec.tstamp
    vtare=rec.vtare,
    vgross=rec.vgross     
    WHERE id=rec.id;

    IF FOUND THEN
        myoutput:= 'Record successfully updated';
        RETURN myoutput;
    END IF;

    BEGIN
        INSERT INTO tbl_weightment SELECT(rec).*;
        myoutput:= 'Record successfully added';           
    END;
 RETURN myoutput;

    END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
Run Code Online (Sandbox Code Playgroud)

这个功能可以修改成这样save_weights(rec tbl_weightment[])吗??任何帮助将不胜感激

postgresql functions postgresql-9.1 array upsert

1
推荐指数
1
解决办法
2936
查看次数

为什么 postgreSQL 使用基于 1 的数组?

为什么 PostgreSQL 使用基于 1 的数组(第一个元素位于索引 1)而不是基于 0 的数组(第一个元素位于索引 0)?

postgresql array

1
推荐指数
1
解决办法
974
查看次数

从 SELECT 更新 BIGINT[] 列

我必须更新一个bigint[]名为permissao_ver.
示例值:'{1,2,3,4,5,11,44,56,75,11}'.

伪代码:

UPDATE callcenter.pausa  
SET permissao_ver = '{"(SELECT cod_grupo FROM crm.usuariosgrupos
                        WHERE habilitar = 1)"}'::bigint[] 
WHERE habilitado = 1 AND permissao_ver is null
Run Code Online (Sandbox Code Playgroud)

我需要获取上面选择的代码将以与bigint[]列匹配的格式返回。喜欢:'{XX, XX, XX, X, XX, X}'

postgresql update array postgresql-9.2

1
推荐指数
1
解决办法
1150
查看次数

如何将一个值连接到通过 sql 查询检索到的数组?

我有一个名为“mkvtable”的表,它在各个字符串和字符串数组之间建立对应关系:

  词| MKV字
------+-----------------
 你好 | {世界,朋友}
 再见| {家,永远}
 你好| {伙计们,女士们}

根据PostgreSQL 提供的文档,将值附加到值数组应该是使用连接运算符“||”的简单问题。

但是,如果我尝试将字符串 , 添加到与单词 对应的there字符串数组中,则似乎不会发生任何情况:{fellas,ladies}hi

SELECT mkvword FROM mkvtable WHERE word = 'hi' || 'there';
Run Code Online (Sandbox Code Playgroud)

PostgresSQL 似乎也说了同样的话:

 mkvword
---------
(0 rows)
Run Code Online (Sandbox Code Playgroud)

由于没有抛出任何错误,我认为语法上没有问题。

我究竟做错了什么?我最好的猜测是 psql 感到不安,因为我试图通过使用数组与相邻列中的值的关系来访问数组,但这只是一个未经教育的猜测。也许这种查询与连接运算符不太适合?

TL;DR:如何正确地将值连接到表行中存储的数组?

postgresql array string-manipulation

1
推荐指数
1
解决办法
2387
查看次数

如何将多个 ROW 分组为 ARRAY

这是我当前的查询:

SELECT innings_no,
Player_Name,
sum(NoBalls)                                                    as NB
    FROM (
           SELECT A.innings_no,
                  A.bowler,
                  A.Runs_In_Over + ifnull(B.Extra_runs, 0) = 0 as Maiden,
                  A.Balls - ifnull(B.NoBalls, 0)               as Balls,
                  A.Runs_In_Over + ifnull(B.Extra_runs, 0)     as Runs,
                  ifnull(C.Wicket, 0)                          as Wickets,
                  Zero,
                  Four,
                  Six,
                  ifnull(Wides, 0)                             as Wides,
                  ifnull(NoBalls, 0)                           as Noballs
           FROM (SELECT over_id,
                        ABBB.innings_no,
                        ABBB.bowler,
                        count(ABBB.ball_id)                 as Balls,
                        Sum(ABB.Runs_Scored)               As 'Runs_In_Over',
                        SUM(if(ABB.runs_scored = 0, 1, 0)) as Zero,
                        SUM(if(ABB.runs_scored = 4, 1, 0)) as Four,
                        SUM(if(ABB.runs_scored = 6, 1, 0)) as Six
                 FROM …
Run Code Online (Sandbox Code Playgroud)

mysql array json mysql-8.0

0
推荐指数
1
解决办法
2万
查看次数