C# 如何在.net、C中为Orientdb编写“upert”查询?
我正试图在.net中为orient db编写一个查询,我不确定API是否支持文档中的UPSERT。我可以给您一个使用C进行更新/UPSERT的示例。 下面的代码创建一个新的TestDatabaseName数据库和相对类Users和properties userID,否则,如果数据库已经存在,它将执行UPDATE/UPSERT命令 C代码: 演播室输出: 第二次执行时,我尝试用userID=2更新顶点,但UPSERT命令创建它,因为它不存在: 第节: 输出: 演播室输出:C# 如何在.net、C中为Orientdb编写“upert”查询?,c#,.net,orientdb,upsert,C#,.net,Orientdb,Upsert,我正试图在.net中为orient db编写一个查询,我不确定API是否支持文档中的UPSERT。我可以给您一个使用C进行更新/UPSERT的示例。 下面的代码创建一个新的TestDatabaseName数据库和相对类Users和properties userID,否则,如果数据库已经存在,它将执行UPDATE/UPSERT命令 C代码: 演播室输出: 第二次执行时,我尝试用userID=2更新顶点,但UPSERT命令创建它,因为它不存在: 第节: 输出: 演播室输出: 希望有帮助看起来API支
希望有帮助看起来API支持UPSERT。你想举个例子吗?orientdb>UPDATE Client SET id=23 UPSERT,其中id=23更新记录(如果存在)。否则会插入记录。是的,文基,举个例子就好了!谢谢您正在为.NET使用哪个OrientDB驱动程序?我正在使用以下OrientDB NET.binary.Innov8ctive.0.1.4驱动程序。另外,我的用例是创建一个新节点(如果不存在),否则请更新当前节点。非常感谢!它确实有用。那么,如果我想在where子句中添加更多参数,该怎么办?我可以这样做吗?您好@Howard Roark,是的,这是一个简单的示例,但是,如果您愿意,您可以添加更多参数。设置为设置多个字段。在.Where子句之后检查多个条件,ecc。。。。希望对您有所帮助。这只是最后一个问题,。并获取参数。这些参数是什么?在我的例子中,我只使用了userID,但是如果你有另一个名为name的字段,你可以检查它或者@rid,@class,。。这样:.Andname.equalName……很抱歉打扰您,不过我们可以在这种对象映射中包含子查询吗?我想这样做。从“从xyz中选择,其中lastname=abc”创建边缘接触,以从firstname=xyz的公司中选择;
using System;
using Orient.Client;
namespace Stack37995408
{
static class Stack37995408
{
private static string _hostname = "127.0.0.1";
private static int _port = 2424;
private static string _rootUserName = "root";
private static string _rootUserPassword = "root";
private static OServer _server;
private static string _DBname = "TestDatabaseName";
private static string _username = "root";
private static string _password = "root";
private static string _aliasDB = "myTestDatabaseAlias";
static void Main(string[] args)
{
_server = new OServer(_hostname, _port, _rootUserName, _rootUserPassword);
if (!_server.DatabaseExist(_DBname, OStorageType.PLocal))
{
_server.CreateDatabase(_DBname, ODatabaseType.Graph, OStorageType.PLocal);
Console.WriteLine("Database " + _DBname + " created");
//Connect to the DB
OClient.CreateDatabasePool(
_hostname,
_port,
_DBname,
ODatabaseType.Graph,
_username,
_password,
10,
_aliasDB
);
Console.WriteLine("Connected to the DB " + _DBname);
using (ODatabase database = new ODatabase(_aliasDB))
{
//Classes and properties creation
database
.Create
.Class("Users")
.Extends<OVertex>()
.Run();
database
.Create
.Property("userID", OType.Integer)
.Class("users")
.Run();
//Populate the DB
OVertex vertexUser = new OVertex();
vertexUser.OClassName = "Users";
vertexUser
.SetField("userID", 1);
OVertex createVertexUser = database
.Create.Vertex(vertexUser)
.Run();
Console.WriteLine("Created vertex " + createVertexUser.OClassName + " with @rid " + createVertexUser.ORID + " and userID " + createVertexUser.GetField<int>("userID"));
}
}
else
{
//Connection
OClient.CreateDatabasePool(
_hostname,
_port,
_DBname,
ODatabaseType.Graph,
_username,
_password,
10,
_aliasDB
);
Console.WriteLine("Connected to the DB " + _DBname);
using (ODatabase database = new ODatabase(_aliasDB))
{
database
.Update()
.Class("Users")
.Set("userID", 2)
.Upsert()
.Where("userID")
.Equals(2)
.Run();
Console.WriteLine("Operation executed");
}
}
}
}
}
Started Thread 4320
Database TestDatabaseName created
Started Thread 7184
Connected to the DB TestDatabaseName
Created vertex Users with @rid #11:0 and userID 1
Started Thread 4368
database
.Update()
.Class("Users")
.Set("userID", 2)
.Upsert()
.Where("userID")
.Equals(2)
.Run();
Started Thread 6172
Started Thread 7244
Connected to the DB TestDatabaseName
Operation executed
Started Thread 5860