基本Xquery CRUD示例等效于SQL Select,Insert,Delete或Update

时间:2015-06-06 19:27:27

标签: xquery crud

我是一名传统上在RDBMS系统上构建产品和应用程序的工程师。我想将应用程序和产品移植到MarkLogic,与RDBMS技术相比,这非常方便和高效。但是,没有足够的CRUD示例供我起飞。任何人都可以引导我到相同的URI。这将是一个很大的帮助。

我有一个很棒的协作套件,在Javascript + PHP + mySQL上,我想把它移植到Javascript + Xquery + MarkLogic。令人担忧的是,由于文档庞大,我缺乏理解。我无法找到相关的CRUD示例。请帮助我。

提前致谢。 问候 和Manish

2 个答案:

答案 0 :(得分:0)

MarkLogic中的原子信息就是文档。文档由URI标识(这是数据库中的全局唯一名称)。有许多方法可以读取,创建,更新和删除文档。但简而言之,它们都归结为以下功能:

  • 创建:可以使用xdmp:document-insert()插入文档,该文档将获取创建文档的URI以及文档内容本身。例如。 xdmp:document-insert('/my/example.xml', <hello>World!</hello>)

  • 更新:在同一URI中插入的新版文档将覆盖以前的文档。因此,您只需将xdmp:document-insert()与现有URI一起使用,并且传递它的新文档将更新现有URI。您可以使用xdmp:node-insert-child()等函数来修改文档的子部分(创建,更新或删除文档中的特定节点,而不是替换整个文档,所有这些操作都是文档本身的更新)

  • 删除:使用xdmp:document-delete(),其中包含要删除的文档的URI

  • 阅读:这种方式更难以提供一种惯用的阅读方式。当然,您可以使用fn:doc()来读取特定文档,并给出其URI。但由于在SQL中使用其主键读取一条记录非常罕见,因此在MarkLogic中通常使用更复杂的查询来读取文档,多个文档,它们的特定部分,或者基于更复杂的查询返回计算或完整文字搜索。一些示例:fn:doc('/my/example.xml')将返回带有该URI的文档(如果有); /hello将在文档的根目录(在所有文档中)返回名称为hello的所有元素。

除了这些构建块之外,您还有许多其他与文档交互的方法。像REST API一样。或者现有的库或应用程序(例如EXPath Console允许您使用Web界面导航目录并加载文档。)

但是,如果您想了解MarkLogic中的文档,则必须使用查询控制台(在您的开发计算机上的http://localhost:8000/qconsole/)使用这些功能并了解如何使用它们。有关特定功能的文档,请使用以下链接(只需修改功能名称):https://docs.marklogic.com/xdmp:document-insert

(注意:为了简单起见,这个答案需要一些快捷方式,而不是绝对的技术准确性,但概念是完整的)

答案 1 :(得分:0)

感谢Florent Georges的完美回复。我想补充一点,所有CRUD场景都将完成(至少对我而言): 1. xdmp:document-insert() 2. xdmp:node-insert-child() 3. xdmp:node-insert-before() 4. xdmp:node-insert-after() 5. xdmp:node-insert-child() 6. xdmp:node-delete() 7. xdmp:node-replace() 8. fn:doc() 9. xdmp:document-load()

真的,非常感谢你指点我正确的方向。 再次,非常感谢。