【问题标题】:How can I write a ravenDB query in the studio that finds all fields that are not empty如何在工作室中编写 ravenDB 查询来查找所有非空字段
【发布时间】:2018-01-11 02:16:04
【问题描述】:

我是 lucene 新手,第 1 天是新手。因此,我阅读了有关 lucene 的教程,并花了一段时间试图弄清楚如何在 lucene 中找到非空值。

所以我有一个名为 Inspect 的文档 该文档有两个我感兴趣的字段:Inspect 和 Direct。

{
    "Inspect": "Feather",
    "Direct": {} 
}

我想查找 Inspect = "Feather" 且 Direct 不为空的所有文档。 我也有兴趣查找 Direct 也为空的文档。

我在 ravenDB 工作室做这个,所以我使用的是 lucene。我已经尝试了一些类似的东西

Inspect: Feather
And NOT 
Direct: [[NULL_VALUE]]

但是这似乎不起作用。任何建议或方向将不胜感激。

干杯

【问题讨论】:

    标签: lucene ravendb


    【解决方案1】:

    您需要运行这样的查询:

    Inspect: Feather AND NOT Direct.Count: 0
    

    当您与空对象进行比较时,它会失败,Direct 不为空,但使用 .Count 您实际上是在计算对象中的属性数量,这似乎是您想要的。

    【讨论】:

    • 太棒了,它就像一个魅力。未来的旁注。如何在数组(可能是对象数组)或对象列表中搜索特定元素?因此,如果我有类似 "Direct": { "First": "This is first", "second" { "one": "如果它存在我如何访问这个对象" }, "Third": "The Third" 之类的东西解决方案似乎并不容易找到。我正在尝试使用 lucene 进行查询。每当我搜索时,我都会得到有关如何在 C# 中使用 RavenDB 的结果。
    • 您能否创建一个包含完整详细信息的新问题,我无法以这种格式关注它。
    【解决方案2】:

    @stacka 嗨!我对 RavenDB 也很陌生,但我有一些想法可能会对您有所帮助。首先,使用“-”(减号)字符而不是 NOT。这是一个约定。其次,当没有索引任何属性时,您可能会遇到无法对 db 运行查询的问题。因此,您应该创建一个包含要查询的字段。希望,这会有所帮助。

    【讨论】:

    • 感谢您的建议。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2023-01-16
    • 2014-06-11
    • 2012-05-13
    • 2012-09-03
    • 2020-08-19
    相关资源
    最近更新 更多