SpringDataNeo4j:查找具有PropertyValue列表的所有节点

SpringDataNeo4j:查找具有PropertyValue列表的所有节点,neo4j,spring-data-neo4j,Neo4j,Spring Data Neo4j,我有一个neo4j社交网络数据库,有一个用例可以查看一堆用户ID,并检查图中有多少用户ID。用户如下所示: @NodeEntity public class User { @GraphId Long nodeId; @Indexed(indexName = "uid",unique = true) Long uid; } my check would look somrthing like this :

我有一个neo4j社交网络数据库,有一个用例可以查看一堆用户ID,并检查图中有多少用户ID。用户如下所示:

@NodeEntity
    public class User {

        @GraphId 
        Long nodeId;

        @Indexed(indexName = "uid",unique = true)
        Long uid;

    }


my check would look somrthing like this :



for(Long uid : allUserIds){
        User friend = userRepo.findByPropertyValue("uid", uid);

        if(friend!=null){
            //Create a relationship
        }else{
            //continue
        }
    }
有没有一种方法可以消除每个用户ID的findByPropertyValue?是否有一种更快的方法可以让所有现有用户在一个请求中获得一组UID

Thanks..

你已经做对了


还有findByQuery afaik,它允许您传入一个lucene查询,该查询将是“uid:value1 value2 value3”

您已经做对了


还有findByQuery afaik,它允许您传入一个lucene查询,该查询将是“uid:value1 value2 value3”

您已经做对了


还有findByQuery afaik,它允许您传入一个lucene查询,该查询将是“uid:value1 value2 value3”

您已经做对了


还有findByQuery afaik,它允许您传入lucene查询,该查询将是
“uid:value1 value2 value3”

您可以尝试使用密码查询:

Map<String, Object> params = new HashMap<String, Object>();

String query = "start user=node:__types__(className=\"<package>.User\") where ID(user)>=0 and ID(user) in {uids} return user"; // substitute <package> with the full package name

params.put("uids", allUserIds); // allUserIds should be a Collection<Long>

Collection<User> users = neo4jOperations.query(query.toString(), params).to(User.class).as(Collection.class);

for (User user: users) {
    ...
}
Map params=newhashmap();
String query=“start user=node:\uuuuu types(className=\”.user\”)其中ID(user)>=0,{uids}中的ID(user)返回用户“//替换为完整的包名
参数put(“uids”,allUserIds);//allUserIds应该是一个集合
Collection users=neo4jooperations.query(query.toString(),params).to(User.class).as(Collection.class);
for(用户:用户){
...
}

您可以尝试使用密码查询:

Map<String, Object> params = new HashMap<String, Object>();

String query = "start user=node:__types__(className=\"<package>.User\") where ID(user)>=0 and ID(user) in {uids} return user"; // substitute <package> with the full package name

params.put("uids", allUserIds); // allUserIds should be a Collection<Long>

Collection<User> users = neo4jOperations.query(query.toString(), params).to(User.class).as(Collection.class);

for (User user: users) {
    ...
}
Map params=newhashmap();
String query=“start user=node:\uuuuu types(className=\”.user\”)其中ID(user)>=0,{uids}中的ID(user)返回用户“//替换为完整的包名
参数put(“uids”,allUserIds);//allUserIds应该是一个集合
Collection users=neo4jooperations.query(query.toString(),params).to(User.class).as(Collection.class);
for(用户:用户){
...
}

您可以尝试使用密码查询:

Map<String, Object> params = new HashMap<String, Object>();

String query = "start user=node:__types__(className=\"<package>.User\") where ID(user)>=0 and ID(user) in {uids} return user"; // substitute <package> with the full package name

params.put("uids", allUserIds); // allUserIds should be a Collection<Long>

Collection<User> users = neo4jOperations.query(query.toString(), params).to(User.class).as(Collection.class);

for (User user: users) {
    ...
}
Map params=newhashmap();
String query=“start user=node:\uuuuu types(className=\”.user\”)其中ID(user)>=0,{uids}中的ID(user)返回用户“//替换为完整的包名
参数put(“uids”,allUserIds);//allUserIds应该是一个集合
Collection users=neo4jooperations.query(query.toString(),params).to(User.class).as(Collection.class);
for(用户:用户){
...
}

您可以尝试使用密码查询:

Map<String, Object> params = new HashMap<String, Object>();

String query = "start user=node:__types__(className=\"<package>.User\") where ID(user)>=0 and ID(user) in {uids} return user"; // substitute <package> with the full package name

params.put("uids", allUserIds); // allUserIds should be a Collection<Long>

Collection<User> users = neo4jOperations.query(query.toString(), params).to(User.class).as(Collection.class);

for (User user: users) {
    ...
}
Map params=newhashmap();
String query=“start user=node:\uuuuu types(className=\”.user\”)其中ID(user)>=0,{uids}中的ID(user)返回用户“//替换为完整的包名
参数put(“uids”,allUserIds);//allUserIds应该是一个集合
Collection users=neo4jooperations.query(query.toString(),params).to(User.class).as(Collection.class);
for(用户:用户){
...
}

我确实看到了一个:EndResult查询(字符串查询,映射参数);这不是比我现在做的更快吗?考虑到我可能有多达1000个用户ID,命中率只有2或3。。谢谢,迈克尔。你说的命中率是什么意思?是否要向查询传递1000个用户标识?我认为lucene列表查询不能很好地处理大量的单个术语。但是一些10-20应该可以很好地工作;这不是比我现在做的更快吗?考虑到我可能有多达1000个用户ID,命中率只有2或3。。谢谢,迈克尔。你说的命中率是什么意思?是否要向查询传递1000个用户标识?我认为lucene列表查询不能很好地处理大量的单个术语。但是一些10-20应该可以很好地工作;这不是比我现在做的更快吗?考虑到我可能有多达1000个用户ID,命中率只有2或3。。谢谢,迈克尔。你说的命中率是什么意思?是否要向查询传递1000个用户标识?我认为lucene列表查询不能很好地处理大量的单个术语。但是一些10-20应该可以很好地工作;这不是比我现在做的更快吗?考虑到我可能有多达1000个用户ID,命中率只有2或3。。谢谢,迈克尔。你说的命中率是什么意思?是否要向查询传递1000个用户标识?我认为lucene列表查询不能很好地处理大量的单个术语。但是一些10-20应该很好。谢谢雷米吉奥和迈克尔:)谢谢雷米吉奥和迈克尔:)谢谢雷米吉奥和迈克尔:)谢谢雷米吉奥和迈克尔:)谢谢雷米吉奥和迈克尔:)