[英]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.