相当于 SQL Select、插入、删除或更新的基本 Xquery CRUD 示例
Basic Xquery CRUD samples equivalent to SQL Select, Insert, Delete or Update
我是一名工程师,传统上在 RDBMS 系统上构建产品和应用程序。我想将应用程序和产品移植到MarkLogic上,这相对于RDBMS技术来说非常方便和高效。但是,没有足够的 CRUD 示例可供我使用。任何人都可以引导我找到合适的 URI 吗?这将是一个很大的帮助。
我在 Javascript+PHP+mySQL 上有一个很棒的协作套件,我想将它移植到 Javascript+Xquery+MarkLogic。关注点是由于大量文档,我缺乏理解。我找不到相关的 CRUD 例子起飞。请帮助我。
提前致谢。
问候
马尼什
MarkLogic 中的原子信息是文档。文档由 URI 标识(这是它在数据库中的全局唯一名称)。有许多方法可以读取、创建、更新和删除文档。但简而言之,它们都归结为以下功能:
create:可以使用 xdmp:document-insert()
插入文档,它采用创建文档的 URI 和文档内容本身。例如。 xdmp:document-insert('/my/example.xml', <hello>World!</hello>)
update: 一个新版本的文档,插入相同的 URI,将覆盖以前的文档。因此,您可以简单地将 xdmp:document-insert()
与现有 URI 一起使用,您传递给它的新文档将更新现有文档。您可以使用 xdmp:node-insert-child()
等函数来修改文档的子部分,而不是替换整个文档(创建、更新或删除文档中的特定节点,所有这些操作都是对文档本身的更新)
delete:使用xdmp:document-delete()
,获取要删除的文档的URI
阅读:要给出一种惯用的阅读方式,这要困难得多。当然,您可以使用 fn:doc()
读取特定文档,给定其 URI。但是由于在 SQL 中很少使用其主键读取一条记录,在 MarkLogic 中通常使用更复杂的查询来读取文档、多个文档、它们的特定部分,或者 return基于更复杂的查询或全文搜索的计算。一些示例:fn:doc('/my/example.xml')
将 return 具有该 URI 的文档(如果有); /hello
将 return 名称为 hello
的所有元素放在文档的根部(在所有文档中)。
除了这些构建基块之外,您还有许多其他方式与文档进行交互。喜欢 REST API。或者现有的库或应用程序(例如 EXPath Console 让您可以使用 Web 界面导航目录和加载文档)。
但是,如果您想了解 MarkLogic 中的文档,则必须使用查询控制台(位于 http://localhost:8000/qconsole/ on your dev machine). For documentation on a specific function, use the following link (just modify the name of the function): https://docs.marklogic.com/xdmp:document-insert。
)使用这些功能并了解如何使用它们
(注意:为了简单而不是绝对的技术准确性,这个答案采用了一些捷径,但概念是完整的)
感谢 Florent Georges 的完美回复。我想补充一点,所有 CRUD 场景都将完成(至少对我而言):
1. xdmp:document-插入()
2. xdmp:node-insert-child()
3. xdmp:node-插入前()
4. xdmp:node-插入后()
5. xdmp:node-insert-child()
6. xdmp:node-删除()
7. xdmp:node-替换()
8. fn:doc()
9. xdmp:document-加载()
真的,非常感谢您为我指明了正确的方向。
再次感谢。
我是一名工程师,传统上在 RDBMS 系统上构建产品和应用程序。我想将应用程序和产品移植到MarkLogic上,这相对于RDBMS技术来说非常方便和高效。但是,没有足够的 CRUD 示例可供我使用。任何人都可以引导我找到合适的 URI 吗?这将是一个很大的帮助。
我在 Javascript+PHP+mySQL 上有一个很棒的协作套件,我想将它移植到 Javascript+Xquery+MarkLogic。关注点是由于大量文档,我缺乏理解。我找不到相关的 CRUD 例子起飞。请帮助我。
提前致谢。 问候 马尼什
MarkLogic 中的原子信息是文档。文档由 URI 标识(这是它在数据库中的全局唯一名称)。有许多方法可以读取、创建、更新和删除文档。但简而言之,它们都归结为以下功能:
create:可以使用
xdmp:document-insert()
插入文档,它采用创建文档的 URI 和文档内容本身。例如。xdmp:document-insert('/my/example.xml', <hello>World!</hello>)
update: 一个新版本的文档,插入相同的 URI,将覆盖以前的文档。因此,您可以简单地将
xdmp:document-insert()
与现有 URI 一起使用,您传递给它的新文档将更新现有文档。您可以使用xdmp:node-insert-child()
等函数来修改文档的子部分,而不是替换整个文档(创建、更新或删除文档中的特定节点,所有这些操作都是对文档本身的更新)delete:使用
xdmp:document-delete()
,获取要删除的文档的URI阅读:要给出一种惯用的阅读方式,这要困难得多。当然,您可以使用
fn:doc()
读取特定文档,给定其 URI。但是由于在 SQL 中很少使用其主键读取一条记录,在 MarkLogic 中通常使用更复杂的查询来读取文档、多个文档、它们的特定部分,或者 return基于更复杂的查询或全文搜索的计算。一些示例:fn:doc('/my/example.xml')
将 return 具有该 URI 的文档(如果有);/hello
将 return 名称为hello
的所有元素放在文档的根部(在所有文档中)。
除了这些构建基块之外,您还有许多其他方式与文档进行交互。喜欢 REST API。或者现有的库或应用程序(例如 EXPath Console 让您可以使用 Web 界面导航目录和加载文档)。
但是,如果您想了解 MarkLogic 中的文档,则必须使用查询控制台(位于 http://localhost:8000/qconsole/ on your dev machine). For documentation on a specific function, use the following link (just modify the name of the function): https://docs.marklogic.com/xdmp:document-insert。
)使用这些功能并了解如何使用它们(注意:为了简单而不是绝对的技术准确性,这个答案采用了一些捷径,但概念是完整的)
感谢 Florent Georges 的完美回复。我想补充一点,所有 CRUD 场景都将完成(至少对我而言): 1. xdmp:document-插入() 2. xdmp:node-insert-child() 3. xdmp:node-插入前() 4. xdmp:node-插入后() 5. xdmp:node-insert-child() 6. xdmp:node-删除() 7. xdmp:node-替换() 8. fn:doc() 9. xdmp:document-加载()
真的,非常感谢您为我指明了正确的方向。 再次感谢。