Tile38空间数据库操作命令之FSET、JSET

简介: Tile38空间数据库操作命令之FSET、JSET

FSET语法

FSET key id [XX] field value [field value ...]
复制代码

设置id的一个或多个字段的值。值的类型是双精度浮点型。

示例

FSET fleet truck1 speed 16 wheels 8
复制代码

我们对fleet下面的truck1设置了两个字段值;一个是speed为16,一个是wheels为8。

如果对一个不存在的id进行设置,那么会抛出错误。我们可以使用参数XX来避免程序抛出错误。

FSET fleet trunk100 speed 90
复制代码

如果trunk100不存在,那么上面的命令就会发生错误,为了避免这个错误,我们可以用下面这个命令:

FSET fleet trunk100 XX speed 90
复制代码

这样的话,即使trunk100这个id不存在,执行这个命令也不会报错,当然也不会成功,相当于啥也没做。

JSET语法

JSET key id path value [RAW|STR]
复制代码

JSET的作用就是在一个JSON文档中设置一个值。

示例

通过JSET命令,我们可以构建一个JSON文档

127.0.0.1:9851> JSET user 901 name Tom
{"ok":true,"elapsed":"64.751µs"}
127.0.0.1:9851> JGET user 901
{"ok":true,"value":"{"name":"Tom"}","elapsed":"17.864µs"}
复制代码

除了上面这样针对一个简单字段创建JSON文档,我们还可以针对更深层次的path进行设置:

127.0.0.1:9851> JSET user 901 name.first Tom
{"ok":true,"elapsed":"70.712µs"}
127.0.0.1:9851> JGET user 901
{"ok":true,"value":"{"name":{"first":"Tom"}}","elapsed":"21.651µs"}
127.0.0.1:9851> JSET user 901 name.last Anderson
{"ok":true,"elapsed":"53.741µs"}
127.0.0.1:9851> JGET user 901
{"ok":true,"value":"{"name":{"first":"Tom","last":"Anderson"}}","elapsed":"17.704µs"}
复制代码

上面的示例就是通过name.firstname.last的方式来实现深层次的JSON文档。

  • RAW
SET linestrings 1 OBJECT {"type": "LineString", "coordinates": [[0, 0], [1, 1]]}
JSET linestrings 1 coordinates.-1 [2,2] RAW
JGET linestrings 1
> {"type":"LineString","coordinates":[[0,0],[1,1],[2,2]]}
复制代码
  • RAW允许将值解释为序列化的JSON对象。上面的JSET命令作用就是给coordinates数组的最后加上一个元素[2,2]
  • STR
JSET test 1 properties.bool true
JGET test 1 properties.bool
> {"value":true}
JSET test 1 properties.bool true STR
JGET test 1 properties.bool
> {"value":"true"}
复制代码
  • 如果没有在命令中加上STR,那么properties.bool的值就是true;加上STR就把properties.bool改变成了字符串的"true",而不是一个真正的布尔值。针对于整型数值,如果有需要的话,也可以通过添加STR的方式,将它们改变成字符串类型。

需要补充介绍的另外两个命令JGET、JDEL:

  • JGET语法:
JGET key id path [RAW]
复制代码
  • 从 JSON 文档中获取值。
JSET user 901 name Tom
JGET user 901
> {"name":"Tom"}
JSET user 901 name.first Tom
JSET user 901 name.last Anderson
JGET user 901 name.last
> {"ok":true,"value":"Anderson","elapsed":"12.724µs"}
复制代码
  • 我们既可以通过JGET key id获取整个JSON文档,也可以通过JGET key id path获取指定的JSON文档中的字段值。
  • JDEL语法:
JDEL key id path
复制代码
  • JDEL的作用就是从JSON文档中删除目标字段及相关值。
JSET user 901 name.first Tom
JSET user 901 name.last Anderson
JGET user 901
> {"name":{"first":"Tom","last":"Anderson"}}
JDEL user 901 name.last
JGET user 901
> {"name":{"first":"Tom"}}
复制代码
  • 在上面示例中,我们通过JSET产生了两个值,后续通过JDEL命令删掉了其中的name.last


相关文章
|
5天前
|
NoSQL 关系型数据库 MySQL
数据库常用命令汇总
数据库常用命令因数据库的类型(如关系型数据库、非关系型数据库等)和具体的产品(如MySQL、Oracle、SQL Server、MongoDB等)而异。
72 4
|
5天前
|
关系型数据库 MySQL 数据库
Python tk dos命令备份mysql数据库
Python tk dos命令备份mysql数据库
30 0
|
5天前
|
SQL 关系型数据库 MySQL
|
2天前
|
存储 缓存 NoSQL
NoSQL缓存数据库的使用场景实例和命令速查表
【5月更文挑战第8天】Redis 是一个内存数据结构服务,用 C 编写,支持五种数据结构,不仅限于键值对。它用于缓存、消息队列、订阅/发布系统等,提供持久化、主从复制和集群支持。了解其核心数据结构和应用场景是有效利用 Redis 的关键。
24 3
NoSQL缓存数据库的使用场景实例和命令速查表
|
5天前
|
SQL XML 数据库
sql导入数据库命令
在SQL Server中,数据库导入可通过多种方式实现:1) 使用SSMS的“导入数据”向导从各种源(如Excel、CSV)导入;2) BULK INSERT语句适用于导入文本文件;3) bcp命令行工具进行批量数据交换;4) OPENROWSET函数直接从外部数据源(如Excel)插入数据。在操作前,请记得备份数据库,并可能需对数据进行预处理以符合SQL Server要求。注意不同方法可能依版本和配置而异。
|
5天前
|
SQL Oracle 关系型数据库
Oracle SQL*Plus的SPOOL命令:数据库世界的“录像机”
【4月更文挑战第19天】`SQL*Plus`的`SPOOL`命令是Oracle数据库中的“录像机”,能记录所有操作和输出。它在用户开始“SPOOL ON”时启动,记录SQL查询、输出、错误信息等。完成后,“SPOOL OFF”停止记录并生成日志文件,便于回顾和检查。日志文件可自定义保存位置和命名,支持多文件录制,方便分类管理。无论数据分析、SQL脚本编写还是日常维护,`SPOOL`都是强大的工具,值得一试!
|
5天前
|
SQL Oracle 关系型数据库
Oracle SQL*Plus的HELP命令:你的数据库“百事通”
【4月更文挑战第19天】`Oracle SQL*Plus` 的 `HELP` 命令是数据库查询的强大工具,犹如“百事通”。在遇到困惑时,`HELP` 可提供详细命令解释和用法示例,解答基础到高级的 SQL 和 PL/SQL 疑问。它还是“活字典”,揭示命令关联与区别,如 `SET` 和 `ALTER SESSION`。此外,`HELP` 解释数据库概念,如“事务”,并支持模糊查询。无论新手还是专家,`HELP` 都是数据库探索的得力助手。
|
5天前
|
SQL Oracle 关系型数据库
Oracle SQL*Plus的SET命令:你的数据库会话“调色板”
【4月更文挑战第19天】Oracle SQL*Plus的SET命令是数据库会话的“调色板”,用于设置输出格式、反馈信息和各种偏好。它能调整PAGESIZE和LINESIZE以优化显示,控制ECHO和FEEDBACK开关以定制反馈,以及统计命令执行时间(TIMING)和调试SQL(VERIFY)。更高级的选项如HEADING和COLSEP可改善输出的可读性。通过灵活运用SET命令,能提升工作效率和体验,是数据库管理员和开发者的必备工具。
|
5天前
|
SQL 数据库 HIVE
Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
【4月更文挑战第8天】Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
29 0
|
5天前
|
Shell Linux 数据库
【Shell 命令集合 网络通讯 】Linux 更新邮件别名数据库 newaliases命令 使用指南
【Shell 命令集合 网络通讯 】Linux 更新邮件别名数据库 newaliases命令 使用指南
30 1