У меня есть случай, когда использование я создаю новые отношения каждый раз, когда пользователь видит фотографию, как это:Neo4jclient - вставить несколько отношений в одной партии
var dateParams = new { Date = DateTime.Now.ToString() };
graphClient.Cypher
.Match("(user:User), (photo:Photo)")
.Where((UserEntity user) => user.Id == userId)
.AndWhere((PhotoEntity photo) => photo.Id == photoId)
.CreateUnique("user-[:USER_SEEN_PHOTO {params}]->photo")
.WithParam("params", dateParams)
.ExecuteWithoutResults();
с большим количеством одновременно работающих пользователей, это будет очень и очень часто так Мне нужно быть в очереди слишком много операций записи и выполнять их одновременно. К сожалению, я havn't удалось найти хорошую информацию о том, как сделать это наиболее эффективным образом с Neo4jClient, так что все предложения будут очень ценится :)
--- UPDATE ---
Так что я попытался разные комбинации, но я до сих пор не нашел ничего, что работает. Ниже запрос дает мне «PatternException: Unbound pattern!»?
var query = graphClient.Cypher;
for (int i = 0; i < seenPhotosList.Count; i++)
{
query = query.CreateUnique("(user" + i + ":User {Id : {userId" + i + "} })-[:USER_SEEN_PHOTO]->(photo" + i + ":Photo {Id : {photoId" + i + "} })")
.WithParam("userId" + i, seenPhotosList[i].UserId)
.WithParam("photoId" + i, seenPhotosList[i].PhotoId);
}
query.ExecuteWithoutResults();
Я также попытался изменить CreateUnique для слияния и запрос выполняется без исключения, но создает новые узлы вместо подключения существующих?
var query = graphClient.Cypher;
for (int i = 0; i < seenPhotosList.Count; i++)
{
query = query.Merge("(user" + i + ":User {Id : {userId" + i + "} })-[:USER_SEEN_PHOTO]->(photo" + i + ":Photo {Id : {photoId" + i + "} })")
.WithParam("userId" + i, seenPhotosList[i].UserId)
.WithParam("photoId" + i, seenPhotosList[i].PhotoId);
}
query.ExecuteWithoutResults();
Спасибо за ваши предложения Николас! Я видел это сообщение в блоге раньше, но я действительно хочу сохранить его простым и придерживаться Neo4jClient. Я пытаюсь найти какой-то запрос foreach, который работает, но я еще не прошел :( –