Data Modelling of Many to Squillions relations

I currently have two resources in my application:

A File representation in the files collection:

_id: file1
fileGroups: ["group1"]

and a FileGroup in the file_groups collections

_id: group1

This works great and allows for a fast query for all files in a specific file group.

Now my new requirement is to have the option to have the same file attached to a file group more than once and to have a manual sorting of files in file groups, something that isn’t representable this way.

My first idea was, of course, to create a reference back like this:

FileGroup

_id: group1
files: ["file1"]

This would solve the complete problem but has one major downside: The maximum size per document in mongodb is 16MB and with an ID length of 16B that works out to a maximum of 1 million files per file group given that there wouldn’t be any other data present on the document. I wanted the limit of files per file group to be more in the range of 10-100 Mio.

My next Idea was this:

File

_id: file1
fileGroups: ["group1"]
manualSorting:
    group1: 1

This could be sorted for group1 by manualSorting.group1 but with the caveat that it won’t work with the file being multiple times in the same group. This would also require updating the index of possibly millions of documents if a files position would be changed.

Of course, you could store both indices of the files manual sorted position in an array likes this
File

_id: file1
fileGroups: ["group1"]
manualSorting:
    group1: [1, 10]

but I think this couldn’t be sorted efficiently.

Another idea was to create a relationship collection and then to join them somehow, but as far as I understand, that goes against the whole Idea of NoSQL.

I guess I could also duplicate the file document and have two IDs for the same document, but this would be very nasty ^^’

What would be the way to handle such a situation in MongoDB?