I'm trying to return content in the language specified by the user, or the default language (english) if the content is not found in the selected language. It seems like returning an object from a collect statement is not supported. Is there a way to achieve a similar result though?
The query as it is now:
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
The problem is what I really want returned is an object with the name of the node as well as the language code. Something like:
collect(langNode.name, langNode.languageCode) AS terms
or this:
collect(langNode.name) AS terms.name,
collect(langNode.languageCode) AS terms.languageCode
Of course, this syntax does not work. Are there any simple solutions to this?
Not sure I understand exactly how your model works, but you could probably achieve what you want with map and collection literals. For your first example you could experiment with
collect ( [langNode.name, langNode.languageCode] ) as terms
and second example
{name:collect (langNode.name), languageCode:collect (langNode.languageCode) } as terms
or
collect ( {name:langNode.name, languageCode:langNode.languageCode} ) as terms
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With