gpt4 book ai didi

ravendb - 检查 RavenDB 中是否存在属性

转载 作者:行者123 更新时间:2023-12-01 09:27:11 25 4
gpt4 key购买 nike

我想向现有文档添加属性(使用线索形式 http://ravendb.net/docs/client-api/partial-document-updates )。但在添加之前要检查该属性是否已存在于我的数据库中。

是否有任何“特殊的、适当的 ravendB 方式”可以实现这一目标?
或者只是加载文档并检查此属性是否为空?

最佳答案

您可以使用基于集合的数据库更新来执行此操作。您可以使用 JavaScript 来执行它,幸运的是,它与 C# 非常相似,因此对任何人来说都是一个非常轻松的过程。这是我刚刚运行的更新示例。

注意:执行此操作时必须非常小心,因为脚本中的错误可能会产生不良结果。例如,在我的代码中,CustomId 包含类似“1234-1”的内容。在我编写脚本的第一次迭代中,我有:

product.Order = parseInt(product.CustomId.split('-'));

请注意,拆分后我忘记了索引器。结果?一个错误,对吧?没有。订单的值为 12341!它应该是 1。所以要小心,一定要彻底测试它。

例子:

Job 有一个 Products 属性(一个集合),我正在将新的 Order 属性添加到现有的 Products。

ravenSession.Advanced.DocumentStore.DatabaseCommands.UpdateByIndex(
"Raven/DocumentsByEntityName",
new IndexQuery { Query = "Tag:Jobs" },
new ScriptedPatchRequest { Script =
@"
this.Products.Map(function(product) {
if(product.Order == undefined)
{
product.Order = parseInt(product.CustomId.split('-')[1]);
}
return product;
});"
}
);

我引用了这些页面来构建它:

set based ops

partial document updates (特别是 Map 部分)

关于ravendb - 检查 RavenDB 中是否存在属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11184779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com