【问题标题】:How to delete all RavenDB documents with a certain property如何删除具有特定属性的所有 RavenDB 文档
【发布时间】:2017-02-08 04:03:33
【问题描述】:

我需要以编程方式删除一堆文档。我可以使用 UI 中的 javascript“补丁”功能来查找这些文档,并添加一个属性来识别它们,如下所示:

if (__document_id.indexOf("baddata") > 0) {
   this.'MakeThisGoAway' = true;
}

但我找不到删除“补丁”中文档的方法。 (我假设是设计的)

从 Raven 文档看来,正确的做法是通过 curl 发出 DELETE 请求,如下所述:https://ravendb.net/docs/article-page/3.5/http/client-api/commands/documents/how-to/delete-or-update-documents-using-index,请求如下:

curl -X DELETE "http://localhost:8080/databases/NorthWind/bulk_docs/Raven/DocumentsByEntityName?&query=Tag%3AShops&allowStale=false" 

但唯一的例子是删除集合中的所有文档。看起来我应该能够包含像“propertyname=MakeThisGoAway&value=true”这样的查询,但我在文档中找不到任何关于其具体工作原理的内容。我错过了什么吗?

【问题讨论】:

    标签: ravendb


    【解决方案1】:

    我想通了,我错过了几个步骤,并且对 lucene 查询的语法也很模糊。

    如果它对任何人有帮助,以下是我批量删除 Ravendb 文档时必须执行的全套步骤:

    1. 如果您需要删除历史文档,请从版本控制中排除集合。如果您不这样做,Raven 将不允许您删除具有“Raven-Document-Revision-Status”:“Historical”的文档。转到系统文档,找到 Raven/Versioning/CollectionYouWant,并将“排除”设置为 true。

    2. 转到 Documents/Patch,选择 Collection,选择所需的 Collection,然后编写补丁脚本为要删除的数据添加标志字段。 (如果您想删除对某个字段具有特定值的所有文档,则可以跳过此步骤)此外,如果此数据是只读的,则需要将其设置为 false。示例补丁脚本:

      // wrap with a conditional to only affect the data that meets your criteria
      if (this.baddata == 1 || __document_id.indexOf("baddata") > 0) {
          // remove Raven-Read-Only, or the delete will fail
          this['@metadata']['Raven-Read-Only'] = false;  
          // add a flag field to identify the documents you will be deleting
          this.MakeThisGoAway = true;
      }
      
    3. 将刚刚创建的字段添加到索引中。转到索引,点击铅笔按钮,然后将“MakeThisGoAway = doc.MakeThisGoAway”添加到其映射中的选择语句中。然后保存,并通过在工作室中重新打开索引并在齿轮图标下执行“索引条目”来强制重新索引。

    4. 使用您添加的标志字段删除所有文档,方法是使用 curl 或邮递员发送 DELETE 到:

      http://ravenserver:8080/databases/DbName/bulk_docs/This/Is/Your/Index?query="MakeThisGoAway:true"
      
    5. 检查以确保您想要的文件已消失。如果一切顺利,通过从索引中删除 flag 属性进行整理,然后将 Versioning 文档设置回 Exclude:false。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 1970-01-01
      • 2023-02-14
      • 1970-01-01
      相关资源
      最近更新 更多