具有自定义字段名称的 RavenDB 查询索引

发布于 2024-12-04 05:59:12 字数 569 浏览 0 评论 0原文

我在 RavenDB 中收集了 Message 文档。 定义:

class Message
{
    string Content;
    Tag[] Tags;
}

class Tag
{
    string Value;
}

我有索引:

from doc in docs.Messages
from docTagsItem in (IEnumerable<dynamic>)doc.Tags
select new { Content = doc.Content, TagsValue = docTagsItem.Value }

这里我们有名为 TagsValue 的字段,它不是 Message 类的一部分,这就是为什么我不能使用

Session.Query<Message>(indexName).Where(m=>m.TagsValue==tagValue)

如何通过 TagValue 从 .NET 查询此索引?我应该使用 Advanced.LuceneQuery 吗?

I have collection of documents Message in RavenDB.
Definition:

class Message
{
    string Content;
    Tag[] Tags;
}

class Tag
{
    string Value;
}

And i have index:

from doc in docs.Messages
from docTagsItem in (IEnumerable<dynamic>)doc.Tags
select new { Content = doc.Content, TagsValue = docTagsItem.Value }

Here we have field with name TagsValue which isn't part of class Message, that's why i can't using

Session.Query<Message>(indexName).Where(m=>m.TagsValue==tagValue)

How should query this index from .NET by TagValue? Should i use Advanced.LuceneQuery?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

诗酒趁年少 2024-12-11 05:59:12

因为您使用 Linq,所以您需要创建一个具有该属性的类型来查询它,或者您可以使用 Lucene API。

请注意,您实际上不需要使用静态索引进行类似的查询,您可以仅使用动态索引和纯 linq 来执行此操作。

Because you use Linq you need to create a type with that property to query that, or you can use Lucene API.

Note that you don't actually need to make a query like that using a static index, you can do that using just dynamic indexes and pure linq.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文