SpringDataNeo4j:查找具有PropertyValue列表的所有节点
我有一个neo4j社交网络数据库,有一个用例可以查看一堆用户ID,并检查图中有多少用户ID。用户如下所示: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 :
@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应该很好。谢谢雷米吉奥和迈克尔:)谢谢雷米吉奥和迈克尔:)谢谢雷米吉奥和迈克尔:)谢谢雷米吉奥和迈克尔:)谢谢雷米吉奥和迈克尔:)