Персона ссылается на класс, чтобы смоделировать отношение «многие ко многим, этот человек берет эти классы».
Сначала вы должны определить, как это моделируется.Есть три способа сделать это с MongoDB.
- Промежуточная таблица, аналогично тому, как это делается в SQL.
- Массив ссылок на одну коллекцию.
- Массив ссылок в обеих коллекциях.
Судя по вашему запросу, у вас есть # 3, но это не дано.
Как мне найтичеловек, который не зарегистрирован в ЛЮБЫХ классах?
Это будет очень специфично для того, как ваши данные фактически хранятся в БД.
Допустим, что people
содержит массивссылки на classes
, ваши данные, вероятно, будут выглядеть так:
{ _id: "John", classes: [ 'math', 'science', 'english' ] }
{ _id: "Mary", classes: [ 'computers', 'biology' ] }
{ _id: "Steve", classes: [ ] }
В этом случае у «Стива» явно нет классов.Ваш запрос ищет people
, где classes
не существует.Но в этом случае classes
существует, он просто пуст.
Если ваши данные выглядят так, вы, вероятно, захотите использовать оператор [$size][1]
.