ли модель данных таким образом, что продукты соединены в списке (например, (: Продукт) - [: ПРЕДЫДУЩИЙ] -> (: Продукт)
Вы можете следить за последний узел Либо? с отметкой времени, что вы можете легко найти или другой узел, подключенный к последнему узлу продукта.
Если да, то вы всегда можете запросить из самых последних с запросом, подобным следующему.
match (max:Date {name: 'Last Product Date'})-->(latest:Product)
with latest
match p=(latest)-[:PREVIOUS*..100]->(:Product)
return nodes(p)
order by length(p) desc
limit 1
ИЛИ что-то вроде этого, когда вы выберете
match (max:Date {name: 'Product Date'})
with max
match p=(latest:Product)-[:PREVIOUS*..100]->(:Product)
where latest.date = max.date
return nodes(p)
order by length(p) desc
limit 1
Другим подходом, все еще использующим список, может быть сохранение индексированного свойства даты создания для каждого продукта. Но когда вы ищете самые последние, выберите контрольную дату, которая не возвращается к началу времени, поэтому у вас есть меньший пул узлов (т. Е. Не миллионы). Затем используйте функцию max
на этом меньшем пуле, чтобы найти самый последний узел и следовать за ним тем, сколько хотите.
match (latest:Product)
where latest.date > {control_date}
with max(latest.date) as latest_date
match p=(product:Product)-[:PREVIOUS*..100]->(:Product)
where product.date = latest_date
return nodes(p)
order by length(p) desc
limit 1
Удаление узла в связанном списке довольно просто. Если вам нужно выполнить этот поиск много, и вы не хотите заказывать продукты, я считаю, что хранение продуктов в списке является довольно хорошим графическим приложением. Ниже приведен пример удаления, поддерживающего список.
match (previous:Product)<-[:PREVIOUS]-(product_to_delete:Product)<-[:PREVIOUS]-(next:Product)
where product_to_delete.name = 'name of node to delete'
create (previous)<-[:PREVIOUS]-(next)
detach delete product_to_delete
return previous, next
Я думаю, что поддержание связанного списка заказанных продуктов будет затруднять удаление продукта, поскольку вам нужно будет поддерживать непрерывную цепочку rel. Другой подход Я думаю, вы могли бы иметь '(: ProductIndex)' node и иметь '(: Product) - [: INDEXED] -> (: ProductIndex)' отношения. Затем вы можете ограничить число последних индексированных продуктов. Таким образом, простое соответствие индекса продукта с лимитом должно выполняться. – drgraduss
Я не думаю, что управление удалением в связанном списке - это то, что onerous - я обновил ответ на примере. Если вы действительно не хотели этого делать, вы всегда можете индексировать дату или номер продукта (при условии увеличения) и использовать этот атрибут для удаления последних 1000 или около того, а затем использовать порядок в этом сокращенном списке. –