У меня есть следующая схема:
(:Thread)
(:User)
(User)->[:PART_OF_THREAD]
В настоящее время ко всем потокам будет подключен дополнительный узел (:User)
, представляющий бота (который выполняет автоматические сообщения и т. Д.). Ниже приведен пример данных для каждого потока (2 пользователя + BotUser)
(Thread)<-[:PART_OF]-(User1)
(Thread)<-[:PART_OF]-(User2)
(Thread)<-[:PART_OF]-(BotUser)
ПРИМЕЧАНИЕ: У каждого пользователя будет тема только с BotUser
. Например,
(Thread)<-[:PART_OF]-(User2)
(Thread)<-[:PART_OF]-(BotUser)
У меня возникают проблемы при попытке запросить поток User2
и BotUser
. Поскольку BotUser
существует в каждом потоке, если я запрашиваю поток между User2 и BotUser, neo4j вернет все потоки, в которых есть User2 и BotUser, это не то, что я хочу, я хочу вернуть JUST поток с BotUser
и User2
. Вот запрос, который я сейчас использую:
MATCH (user1:USER {id: User1Id}) -[:PART_OF_THREAD]->(thread:THREAD)<-[:PART_OF_THREAD]-(:USER {id: BotUserId})
RETURN thread
Как я могу вернуть поток с помощью BotUser
и User1
?
- Нужно ли подсчитывать общее количество пользователей в потоке и возвращать ТОЛЬКО поток, ГДЕ users.length> 2?
- Могу ли я еще что-нибудь сделать?
Если что-то не понятно, не стесняйтесь задавать вопросы