graphql
graphql copied to clipboard
Update by aggregation doesn't work
Describe the bug Update by aggregation doesn't work as expected.
Type definitions
type User {
name: String!
likedPosts: [Post!]! @relationship(type: "LIKES", direction: OUT, properties: "likeProperties")
}
type Post {
id: ID
content: String!
likes: [User!]! @relationship(type: "LIKES", direction: IN, properties: "likeProperties")
}
interface likeProperties{
likedAt: DateTime
}
To Reproduce
Dataset:
CREATE (u:User {name: "username"})
CREATE (u2:User {name: "username2"})
CREATE (u3:User {name: "username3"})
CREATE (u4:User {name: "username4"})
CREATE (u)-[:LIKES]->(p:Post {id: "postID1"})
CREATE (u2)-[:LIKES]->(p2:Post {id: "postID2"})
CREATE (u3)-[:LIKES]->(p2)
CREATE (p3:Post {id: "postID3"})
CREATE (u2)-[:LIKES]->(p3)
CREATE (u3)-[:LIKES]->(p3)
CREATE (p4:Post {id: "postID4"})
CREATE (u2)-[:LIKES]->(p4)
CREATE (u3)-[:LIKES]->(p4)
CREATE (u4)-[:LIKES]->(p4)
CREATE (p5:Post {id: "postID5"})
CREATE (u2)-[:LIKES]->(p5)
CREATE (u3)-[:LIKES]->(p5)
CREATE (u4)-[:LIKES]->(p5)
CREATE (p6:Post {id: "postID6"})
CREATE (u2)-[:LIKES]->(p6)
CREATE (u3)-[:LIKES]->(p6)
CREATE (u4)-[:LIKES]->(p6)
mutation:
mutation {
updateUsers (
update: {
likedPosts: {
connect: {
where: {
node: {
likesAggregate: {
count_LTE: 2
}
}
}
}
}
}) {
users {
name
likedPosts {
id
}
}
}
}
produces:
{
"data": {
"updateUsers": {
"users": [
{
"name": "username",
"likedPosts": [
{
"id": "postID2"
},
{
"id": "postID3"
},
{
"id": "postID1"
}
]
},
{
"name": "username2",
"likedPosts": [
{
"id": "postID1"
},
{
"id": "postID2"
},
{
"id": "postID6"
},
{
"id": "postID5"
},
{
"id": "postID4"
},
{
"id": "postID3"
}
]
},
{
"name": "username3",
"likedPosts": [
{
"id": "postID1"
},
{
"id": "postID2"
},
{
"id": "postID6"
},
{
"id": "postID5"
},
{
"id": "postID4"
},
{
"id": "postID3"
}
]
},
{
"name": "username4",
"likedPosts": [
{
"id": "postID6"
},
{
"id": "postID5"
},
{
"id": "postID4"
}
]
}
]
}
}
}
Expected behavior
the initial dataset could be represented as:
postID1 HAS 1 likes FROM [username1]
postID2 HAS 2 likes FROM [username2, username3]
postID3 HAS 2 likes FROM [username2, username3]
postID4 HAS 3 likes FROM [username2, username3, username4]
postID5 HAS 3 likes FROM [username2, username3, username4]
postID6 HAS 3 likes FROM [username2, username3, username4]
or visually:
graph TD;
username1-->postID1;
username2-->postID2;
username2-->postID3;
username2-->postID4;
username2-->postID5;
username2-->postID6;
username3-->postID2;
username3-->postID3;
username3-->postID4;
username3-->postID5;
username3-->postID6;
username4-->postID4;
username4-->postID5;
username4-->postID6;
The mutation should connect all the users with posts with less than or equal two like, this means that the username4
should be connected to all the Posts
not only postID4, postID5, postID6
.