1

首先,感谢您提供这个很棒的数据库。任何了解关系模型的人都非常容易理解。我可以看到自己在图表中为所有未来的项目建模数据。

现在的问题,

我正在尝试使用 OrientDB 进行数据建模,但遇到了一个奇怪的问题。查询中的字段名称任意使用区分大小写。

例如,

SELECT FROM appuser WHERE mobile = '1111111111' AND out('userhasrole').rolename CONTAINS 'user'

SELECT FROM appuser WHERE MOBILE= '1111111111' AND out('userhasrole').rolename CONTAINS 'user'

工作得很好。

SELECT FROM appuser WHERE mobile = '1111111111' AND out('userhasrole').ROLENAME CONTAINS 'user'

SELECT FROM appuser WHERE MOBILE= '1111111111' AND out('userhasrole').ROLENAME CONTAINS 'user'

不工作

请注意,如果“角色名称”与确切的字段名称不匹配,则它不起作用。请问这是否正常?

另一件事,可能更重要的是

SELECT FROM appuser WHERE MOBILE= '1111111111' AND out('userhasrole').rolename CONTAINS 'user'

有效,但是

SELECT FROM appuser WHERE MOBILE= '1111111111' AND out('userhasrole').rolename ='user'

不工作“角色名”字段是一个简单的字符串,但我仍然必须使用 CONTAINS 才能使其工作。也请就此提出建议。

如果我错过了什么,请告诉我。

谢谢!

4

1 回答 1

1

1°答案

SELECT FROM appuser WHERE mobile = '1111111111' AND out('userhasrole').ROLENAME CONTAINS 'user'

SELECT FROM appuser WHERE MOBILE= '1111111111' AND out('userhasrole').ROLENAME CONTAINS 'user'

由于属性 ROLENAME 以大写形式编写,因此它们不起作用。OrientDB 区分大小写,您必须正确编写属性名称,尤其是在 where 条件下。

2° 阿瑟尔

使用 contains 而不是 '=' 是因为属性 rolename 可以是一个列表,因此它可以包含大量数据,因此您必须使用 CONTAINS。

希望能帮助到你

于 2016-04-25T22:18:59.280 回答