≫ 更新文档

REPLACE

REPLACE 的工作方式类似于 INSERT,但它在插入新文档之前,会将具有相同 ID 的先前文档标记为已删除。

如果您正在寻找原地更新,请参见 本节

SQL REPLACE

SQL REPLACE 语句的语法如下:

替换整个文档:

REPLACE INTO table [(column1, column2, ...)]
    VALUES (value1, value2, ...)
    [, (...)]

SQL 语句中未明确包含的列将被设置为其默认值,例如 0 或空字符串,具体取决于其数据类型。

仅替换选定字段:

REPLACE INTO table
    SET field1=value1[, ..., fieldN=valueN]
    WHERE id = <id>

注意,在此模式下,您只能按 id 进行过滤。

注意:部分替换需要 Manticore Buddy。如果不起作用,请确保已安装 Buddy。

关于 UPDATE 与部分 REPLACE 的更多信息,请参见 这里

详情请参见示例。

JSON REPLACE

  • /replace

    POST /replace
    {
      "table": "<table name>",
      "id": <document id>,
      "doc":
      {
        "<field1>": <value1>,
        ...
        "<fieldN>": <valueN>
      }
    }

    /index 是别名端点,功能相同。

  • 类似 Elasticsearch 的端点 <table>/_doc/<id>

    PUT/POST /<table name>/_doc/<id>
    {
      "<field1>": <value1>,
      ...
      "<fieldN>": <valueN>
    }

    注意:类似 Elasticsearch 的替换需要 Manticore Buddy。如果不起作用,请确保已安装 Buddy。

  • 部分替换:

    POST /<{table | cluster:table}>/_update/<id>
    {
      "<field1>": <value1>,
      ...
      "<fieldN>": <valueN>
    }

    <table name> 可以是仅表名,也可以是 cluster:table 格式。如果需要,可以跨特定集群进行更新。

    注意:部分替换需要 Manticore Buddy。如果不起作用,请确保已安装 Buddy。

详情请参见示例。

‹›
  • SQL
  • REPLACE SET
  • JSON
  • Elasticsearch-like
  • Elasticsearch-like partial
  • Elasticsearch-like partial in cluster
  • PHP
  • Python
  • Python-asyncio
  • javascript
  • Java
  • C#
  • Rust
  • TypeScript
  • Go
📋
REPLACE INTO products VALUES(1, "document one", 10);
‹›
Response
Query OK, 1 row affected (0.00 sec)

REPLACE 可用于实时表和预选表。您不能替换普通表中的数据。

当您执行 REPLACE 时,先前的文档不会被删除,而是被标记为已删除,因此表的大小会增长,直到发生块合并。要强制块合并,请使用 OPTIMIZE 语句

批量替换

您可以一次替换多个文档。更多信息请查看 批量添加文档

‹›
  • SQL
  • JSON
  • PHP
  • Python
  • Python-asyncio
  • javascript
  • Java
  • C#
  • Rust
  • TypeScript
  • Go
📋
REPLACE INTO products(id,title,tag) VALUES (1, 'doc one', 10), (2,' doc two', 20);
‹›
Response
Query OK, 2 rows affected (0.00 sec)
Last modified: August 28, 2025