簡體   English   中英

如何使用Cypher在Neo4j中只結交朋友的朋友

[英]How to get only friends of friends in Neo4j using Cypher

您好,我想建立一個社交網絡。 目前,我正在嘗試顯示“朋友的朋友”,以便可以向用戶推薦朋友。 我正在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查詢缺少圖形模式中節點周圍的括號。 嘗試這個:

MATCH (n:User{mongoId: {idNeo}}) 
MATCH  (n)-[:FRIENDS_WITH*2]-(m) 
WHERE NOT (n)-[:FRIENDS_WITH]-(m) 
RETURN m

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM