我已经使用库服务API将文档插入MarkLogic
。有些情况下,我需要保存没有签入的更改。这意味着将更改保存到当前版本中,而不增加版本号。已经在某些CMIS规范中看到过这样的设施,它提供了现成的解决方案,用于签入具有相同版本的文档。在MarkLogic
找不到类似的API。我能想到的替代选项是取消管理托管文档,使用xdmp函数执行更新和重新管理内容。但是这会丢失以前的版本。有没有其他方法可以做到这一点?在不更改版本的情况下更新受管文档
1
A
回答
1
您是否尝试过简单地使用xdmp更新函数并绕过DLS?例如,您可以使用xdmp:node-replace
替换文档的根元素。文档说你必须使用DLS函数进行更新,但我认为这意味着非DLS更新不会由DLS管理。
让我们试试。
(: new managed document :)
import module namespace dls = "http://marklogic.com/xdmp/dls"
at "/MarkLogic/dls.xqy";
dls:document-insert-and-manage('test', true(), <test id="1"/>)
=>()
import module namespace dls = "http://marklogic.com/xdmp/dls"
at "/MarkLogic/dls.xqy";
dls:document-is-managed('test'),
dls:document-history('test')
=>
true
<dls:document-history uri="test" xmlns:dls="http://marklogic.com/xdmp/dls">
<dls:version>
<dls:version-id>1</dls:version-id>
<dls:document-uri>test</dls:document-uri>
<dls:latest>true</dls:latest>
<dls:created>2013-03-15T10:22:35.642645-07:00</dls:created>
<dls:author>9712740001723797867</dls:author>
<dls:annotation/>
<dls:deleted>false</dls:deleted>
</dls:version>
</dls:document-history>
看起来不错。让我们尝试一个非托管更新。
xdmp:node-replace(doc('test')/test, <test id="2"/>)
=>()
doc('test')
=> <test id="2"/>
import module namespace dls = "http://marklogic.com/xdmp/dls"
at "/MarkLogic/dls.xqy";
dls:document-is-managed('test'),
dls:document-history('test')
=>
true
<dls:document-history uri="test" xmlns:dls="http://marklogic.com/xdmp/dls">
<dls:version>
<dls:version-id>1</dls:version-id>
<dls:document-uri>test</dls:document-uri>
<dls:latest>true</dls:latest>
<dls:created>2013-03-15T10:22:35.642645-07:00</dls:created>
<dls:author>9712740001723797867</dls:author>
<dls:annotation/>
<dls:deleted>false</dls:deleted>
</dls:version>
</dls:document-history>
所以更新工作,但文档历史仍然显示版本1.这就是你想要的,对吧?
现在,我以管理员用户身份执行此操作。对于非管理员用户,您可能必须授予一些额外的权限 - 或者创建一个放大器可能更清洁。这可以用来防范意外的非托管更新。
+0
我曾试过这个,但它没有奏效。我不确定我是否使用了管理员角色或具有足够的权限。这正是我想要的。将尝试通过分配适当的权限。万分感谢 :) – NitZRobotKoder 2013-03-18 06:29:33
相关问题
- 1. SharePoint,在不更改版本号的情况下注册评论
- 2. 在没有版本更改的情况下检测不兼容的API更改
- 3. 在不删除现有值的情况下更新文档
- 4. 如何在不接受所有文本更改的情况下让git接受模式更改?
- 5. 在不更改工作副本的情况下检索文件的旧版本
- 6. 如何在不更改凭据的情况下更新用户
- 7. 如何在不更改rowversion的情况下更新记录
- 8. 在不更改app_id的情况下更新XAP sllauncher.exe
- 9. 情况下,更新
- 10. MongoDB在已经存在的情况下更新文档ReactiveMongo
- 11. 接受不同的文本情况下
- 12. DTF:在不提取文件的情况下更新档案内的文件
- 13. 如何在不更改版本代码的情况下在Android市场上更新我的应用程序
- 14. 在不更改数据库的情况下更改模型?
- 15. 在不更改模式的情况下更改班级
- 16. 手动更新托管文档,不增加版本
- 17. 如何在数据库值更改的情况下更新ListView?
- 18. 如何在不更改文件类型的情况下更改文件名?
- 19. 在不更新url的情况下更新ng-view
- 20. 在不重新启动lighty的情况下更新.po文件
- 21. 在不重新启动服务的情况下更改jobcron
- 22. 在不修改旧数据的情况下更新数据
- 23. 在不重新加载页面的情况下更改URL
- 24. 在不重新启动的情况下应用vimrc更改
- 25. 在不刷新页面的情况下更改内容大小?
- 26. 在不删除的情况下更新MongoDB集合中的某些文档
- 27. Api版本更改但文档未更新?
- 28. 在不改变背景风格的情况下更改jumbotron中的文本
- 29. 在不更改扩展名的情况下更改文件的结尾名称
- 30. 只有在与数据库不同的情况下才更新文档?
我相信有一些技巧可以在这里发挥作用,而不会丢失你的版本。 – 2013-03-15 14:18:58