The first thing you need to understand is that your files and your game collection structure are two totally separate things. It doesn’t matter where or what a file is, that’s just stuff for the editor, you won’t read “.go” or “.collection” files at runtime, and the file names also have nothing to do with the object’s URL at runtime (except that the editor may use it as a default ID).
Getting the URL/ID:
If the object is spawned with a factory at runtime: The factory.create function will return the object’s ID. If you want to use the object later, then you probably want to save this ID somewhere. There is no way to get it again later, other than collision messages or messages sent from the spawned object itself.
If the object is NOT spawned at runtime, if it’s added to a collection in the editor, then you set the ID yourself in the editor. If you want to use the object, then you just hard-code in the URL.
No, with Defold there’s no way to traverse the scene-tree. There’s no get_parent or get_children. If you really need that stuff then you can set it up yourself, but generally you just need to change how you structure your code.
Defold is not Unity or anything like Unity. You could say that Defold does as few things for you as possible. This doesn’t mean it’s “bad”, but it may mean it’s not the engine for you. What it does mean is that you never have to make hacky workarounds or buy things on an asset store to get around built-in features that are buggy or just don’t work the way you want them to.