Язык запросов RavenDB - PullRequest
       14

Язык запросов RavenDB

3 голосов
/ 04 февраля 2020

Я пытаюсь найти дубликаты в некоторых документах raven, но я ничего не знаю о RQL. Мой документ - это документ Product , в котором много Items . Элементы содержат поле PartNumber , которое «должно» быть уникальным для всех продуктов.

Мне нужен запрос, который покажет мои продукты, в которых есть не уникальные товары.

Вот макет моего продукта документа. (Возьмите немного соли - это от руки)

{
    "ProductNumber": "O11223-AABBDD"
    "Items" : [
        {
            "PartNumber": "AAAAAA-001"
        },
        {
            "PartNumber": "AAAAAA-002"
        },
    ]
}

Используя RQL, как я могу запросить документы о моих продуктах, чтобы сообщить мне о продуктах, имеющих элементы []. PartNumber, которые не являются уникальными для всех продуктов?

1 Ответ

0 голосов
/ 05 февраля 2020

RavenDB имеет приятную функцию под названием: Сравнить Exchange , которую можно использовать для сохранения уникальности ваших документов.

См. live-studio : http://live-test.ravendb.net/studio/index.html (в пункте меню Документы в любой базе данных)

См. В Документы : https://ravendb.net/docs/article-page/4.2/Csharp/client-api/operations/compare-exchange/overview

Просмотреть в Блог : https://ayende.com/blog/182948-C/distributed-compare-exchange-operations-with-ravendb


Кроме того,
Вы можете определить Map-Index для «Items» и затем запросить этот индекс для значения, и если результат запроса будет содержать более одного документа, чем вы знаете, он не является уникальным.

Подробнее об индексах можно узнать здесь:
https://ravendb.net/docs/article-page/4.2/csharp/studio/database/indexes/indexes-overview

Смотрите демонстрационные примеры здесь:
https://demo.ravendb.net/demos/csharp/static-indexes/static-indexes-overview
https://demo.ravendb.net/demos/csharp/static-indexes/map-index

...