node.js - 如何使用 Cypher 在 Neo4j 中只获取 friend 的 friend

标签 node.js database neo4j nosql cypher

你好,我想建立一个社交网络。目前我正在尝试显示“ 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/

相关文章:

node.js - 我正在尝试将我的 Electron 应用程序转换为 windows portable

mysql - 数据库中的外键

mysql - 在mysql中创建自引用一对多关系

java - Node 不会持久化到 Neo4j

linux - 无法在 Antergos 上运行 Neo4j(需要整数表达式)

javascript - Node.js 重启后保持 Session

node.js - 禁用永远运行的 node.js 脚本的日志记录

javascript - 为什么函数在全局对象中不可用?

sql - 我应该如何为 Oracle 数据库导入/运行 .pkb 文件?

neo4j - neo4j 属性区分大小写吗?