Я думаю, что краткий ответ на ваш главный вопрос - нет. Вы не можете иметь документ, который встроен в нескольких местах. Это все равно что пытаться получить яйцо внутри двух скорлуп одновременно. В моей голове я считаю отношения mongodb луком (layer = embeds) с потоками, которые соединяются с другими луками (thread = reference). Это может быть странная аналогия, но она работает для меня.
Допустим, что персонажи - даже те, у которых одинаковые имена - уникальны для игры, в которой они находятся. Так что они будут встроены.
Сцены выглядят как яркий пример встроенного массива. У вас никогда не было бы сцены, которая появлялась в нескольких пьесах.
Внешний вид должен быть встроен в сцену по тем же причинам, что и сцены, встроенные в пьесы. Внешний вид также будет ссылаться на персонажа. Есть ли явление, которое не ссылается на персонажа? Я думаю, что нет, но не уверен.
Итак, я бы сделал это так (псевдомоделирование):
Play {
embeds-many Characters
embeds-many Scenes }
Scene { embeds-many Appearances }
Appearance { references a Character }
Character { }
Я думаю, что можно определенно ссылаться на Персонажа из Внешности, вам просто нужно сохранить идентификатор персонажа внутри Внешности. Следующий вопрос - на каком языке вы работаете ... Если вы в Rails, мне лично нравится Mongoid.