最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何使用Cypher只在Neo4j中获得朋友的朋友

运维笔记admin14浏览0评论

如何使用Cypher只在Neo4j中获得朋友的朋友

如何使用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
发布评论

评论列表(0)

  1. 暂无评论