首先,感谢您使用这个非常棒的数据库。对于了解Relational模型的人来说,理解起来非常简单。我可以看到自己在图表中为所有未来的项目建模数据。
现在问题,
我正在尝试使用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'
不起作用
请注意,如果“rolename”与确切的字段名称不匹配,则它不起作用。你能否建议这是否正常?
另一件事,可能更重要是
SELECT FROM appuser WHERE MOBILE= '1111111111' AND out('userhasrole').rolename CONTAINS 'user'
有效,但
SELECT FROM appuser WHERE MOBILE= '1111111111' AND out('userhasrole').rolename ='user'
不起作用。字段“ rolename ”是一个简单的字符串,但我仍然必须使用CONTAINS才能工作。请对此提出建议。
如果我错过了什么,请告诉我。
谢谢!
答案 0 :(得分:0)
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°Aswer
使用contains而不是'='的事实是因为属性rolename可能是一个列表,因此,它可能包含大量数据,因此你必须使用CONTAINS。
希望有所帮助