我正在研究简单的查询构建器,它将用于生成orientdb查询。 Orientjs有一个可用于生成查询的statement.js,但我不确定是否可以用来生成所有类型的查询。
例如:
select * from Employee where (FirstName like "A%" or FirstName like "B%") and (LastName like "G%" or LastName like "F%")
我尝试使用orientjs语句生成上述查询的不同选项,但不能。另外,我们如何使用insert生成查询来复制记录,选择查询?
statement.js是否支持生成此类查询?
答案 0 :(得分:3)
对于复杂的where子句,您只需使用原始字符串:
db.select()
.from('Employee')
.where('(FirstName like "A%" or FirstName like "B%") and (LastName like "G%" or LastName like "F%")').all();
要使用select / insert创建顶点副本,可以通过db.let函数创建事务,例如
return this.db
.let('original', (c) => {
c.select()
.from('Employee')
.where('(FirstName like "A%" or FirstName like "B%") and (LastName like "G%" or LastName like "F%")')
})
.let('copy', (c) => {c
.create('vertex','Employee')
.set('FirstName = $original[0].FirstName')
.set('LastName = $original[0].LastName')
})
.commit()
.return('$copy')
.one();