我正在尝试以用户指定的语言返回内容,或者如果未在所选语言中找到内容,则返回默认语言(英语).似乎不支持从collect语句返回对象.有没有办法达到类似的结果呢?
现在的查询:
MATCH (meta:contentMeta)<-[metaLang:HAS_META]-(content:content)-[:TAGGED_WITH]-(termNode:term)-[lang:HAS_LANGUAGE]-(langNode:termMeta)
WHERE
metaLang.languageCode = {language}
OR metaLang.languageCode = {defaultLanguage}
AND lang.languageCode = {language}
OR lang.languageCode = {defaultLanguage}
RETURN DISTINCT collect(langNode.name) AS terms,
content.displayType AS displayType,
content.savedAs AS savedAs,
content.webURL AS webURL,
content.embedSrc AS embedsrc,
content.UUID AS UUID
LIMIT 15
Run Code Online (Sandbox Code Playgroud)
问题是我真正想要返回的是一个具有节点名称和语言代码的对象.就像是:
collect(langNode.name, langNode.languageCode) AS terms
Run Code Online (Sandbox Code Playgroud)
或这个:
collect(langNode.name) AS terms.name,
collect(langNode.languageCode) AS terms.languageCode
Run Code Online (Sandbox Code Playgroud)
当然,这种语法不起作用.这有什么简单的解决方案吗?
我不确定我的模型究竟是如何工作的,但你可以通过地图和集合文字来实现你想要的.对于您的第一个示例,您可以进行试验
collect ( [langNode.name, langNode.languageCode] ) as terms
Run Code Online (Sandbox Code Playgroud)
和第二个例子
{name:collect (langNode.name), languageCode:collect (langNode.languageCode) } as terms
Run Code Online (Sandbox Code Playgroud)
要么
collect ( {name:langNode.name, languageCode:langNode.languageCode} ) as terms
Run Code Online (Sandbox Code Playgroud)