Skip to content

Update by aggregation doesn't work #2505

Open
@MacondoExpress

Description

@MacondoExpress

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;
Loading

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingconfirmedConfirmed bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions