N1QL检查数组是否包含id

问题描述 投票:1回答:1

我有一个叫做的文件

player::id

对于每个玩家。其中id是玩家的ID(自动递增)。

如何在下面的数组上运行搜索操作,例如检查ID或计数?此数组存储在播放器的保存文档中。

"inventory": {
    "0": {
      "count": 1,
      "id": 6
    },
    "1": {
      "count": 1,
      "id": 13
    },
    "2": {
      "count": 1,
      "id": 142
    },
    "3": {
      "count": 1,
      "id": 144
    }
},

couchbase n1ql
1个回答
2
投票

发布的对象中没有阵列。

如果您希望在文档中找到搜索ID 13并获取相应的计数,则可以使用OBJECT_PAIRS()函数将动态对象转换为https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/objectfun.html描述的ARRAY

SELECT op.val.id, op.val.count, op.name AS pos
FROM default AS d
UNNEST OBJECT_PAIRS(d.inventory) AS op
WHERE op.val.id = 13

OR

SELECT d.*
FROM default AS d
WHERE ANY op IN OBJECT_PAIRS(d.inventory) SATISFIES op.val.id = 13 END;
© www.soinside.com 2019 - 2024. All rights reserved.