1

我正在用 c# 制作一个基于位置的应用程序,我正在使用 neo4j 和 neo4j 空间插件来处理它。为了与空间插件通信,我必须使用它的 REST API,因为目前在 neo4jClient 中不支持它。现在我想将所有节点(带有位置数据,即纬度,经度)添加到空间层,为此我需要所有 neo4j 节点 ID,我的问题是有什么方法可以通过它的数据获取先前插入的节点的节点 ID(在这种情况下,它的纬度/经度),还是有更好的方法将节点添加到空间层?

编辑:我还使用 neo4jClient 进行其他插入和检索

4

1 回答 1

0

首先,除了通过节点的 ID 将节点添加到空间之外,没有其他方法。

您可以编写一个 Cypher 查询,使用函数 has(n.Property) 检索所有节点 ID,例如:

// cypher-query to retrieve node Ids
client.Cypher
   .Match("(n:SpatialIndex)")
   .Where("has(n.lat)")
   .AndWhere("has(n.lon)")
   .Return(node => node.Id());

// add existing node to SimplePoint-Layer
public void AddNodeToLayer(long nodeId, string layer)
{
    string URINode = string.Format("{0}node/{1}",_client.BaseUrl, nodeId);
    string json = string.Format("{{\"layer\":\"{0}\", \"node\":\"{1}\"}}", layer, URINode);

    string URIAdd = string.Format("{0}ext/SpatialPlugin/graphdb/addNodeToLayer", _client.BaseUrl);
    HTTPCommand(new Uri(URIAdd), json);
 }

实际上还有另一个 REST 端点:addMultipleNodesToLayer。不过好像还没推。我已经问过这个问题,并希望它很快就会可用。

于 2013-12-21T11:25:03.680 回答