Я хочу, чтобы документы не удалялись в моем проекте, и я решил использовать метаданные для отметки документа как архивированного. Я использовал ниже код, чтобы сделать это:RavenDB запросы метаданных
public class DeleteDocumentListener : IDocumentDeleteListener
{
public void BeforeDelete(string key, object entityInstance, RavenJObject metadata)
{
metadata.Add("Archived", true);
throw new NotSupportedException();
}
}
После этого я хотел изменить запрос, чтобы вернуть только те документы, которые Архивные значения метаданных к ложным:
using (var session = _store.OpenSession())
{
var query = session.Advanced.DocumentQuery<Cutter>()
.WhereEquals("@metadata.Archived", false);
}
К сожалению, этот обратный запрос пустой результирующий набор. Похоже, что если у документа нет этого свойства метаданных, то выше условие считается ложным. Я не ожидал этого.
Как я могу составить запрос для возврата Документы, не имеющие свойства метаданных, или это свойство имеет какое-то значение?
Это сработало очень хорошо, спасибо. Это правда, что мне нужно реализовать такой индекс для каждого объекта, который у меня есть в моем проекте? Возможно ли иметь один индекс общего назначения? –