你好,我想建立一个社交网络。目前我正在尝试显示“ friend 的 friend ”,以便我可以向用户推荐 friend 。我正在 Node.js 服务器中实现 Neo4j 查询。问题是我当前的 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 查询在图形模式中的 Node 周围缺少括号。试试这个:
MATCH (n:User{mongoId: {idNeo}})
MATCH (n)-[:FRIENDS_WITH*2]-(m)
WHERE NOT (n)-[:FRIENDS_WITH]-(m)
RETURN m
关于node.js - 如何使用 Cypher 在 Neo4j 中只获取 friend 的 friend ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47913867/