如何使用Cypher只在Neo4j中获得朋友的朋友
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Cypher只在Neo4j中获得朋友的朋友相关的知识,希望对你有一定的参考价值。
您好,我想建立一个社交网络。目前我正在尝试展示“朋友的朋友”,以便我可以向用户推荐朋友。我正在Node.js服务器中实现Neo4j查询。问题是我的当前Cypher语法出现语法错误。我希望有人可以看看查询并告诉我有什么问题。
Cypher语法:
MATCH (n:User{mongoId: {idNeo}})
MATCH n-[:FRIENDS_WITH*2]-m
WHERE NOT n-[:FRIENDS_WITH]-m
RETURN m
整条路线:
routes.get('/users/friendsoffriends/:id', function(req, res) {
//res.contentType('application/json');
var ids = [];
const id = req.param('id');
session
.run("MATCH (n:User{mongoId: {idNeo}}) MATCH n-[:FRIENDS_WITH*2]-m WHERE NOT n-[:FRIENDS_WITH]-m RETURN m", {idNeo: id})
.then(function(result) {
result.records.forEach(function(record){
ids.push(record._fields[0].properties.mongoUserId);
});
console.log(ids);
return ids;
})
.then((ids)=>{
User.find({_id: { $in: ids}})
.then((blogPost) => {
res.status(200).json(blogPost);
})
})
.catch((error) => {
res.status(400).json(error);
})
});
答案
您的Cypher查询缺少图形模式中节点周围的parens。试试这个:
MATCH (n:User{mongoId: {idNeo}})
MATCH (n)-[:FRIENDS_WITH*2]-(m)
WHERE NOT (n)-[:FRIENDS_WITH]-(m)
RETURN m
以上是关于如何使用Cypher只在Neo4j中获得朋友的朋友的主要内容,如果未能解决你的问题,请参考以下文章