Это довольно просто: вы никогда не инициализируете поле testObj
в Children
(которое следует назвать Child, BTW). Children.testObj
является владельцем ассоциации и является полем, которое сопоставляется столбцу join, поэтому, если оно равно null, столбец join будет null.
Разреженный индекс можно использовать только при фильтрации по created_at: {$exists: true}
.
Причина в том, что все остальные записи не являются частью индекса (но они все еще должны появляться в результате - возможно, в конце).
Может быть, вам не нужно делать индекс разреженным (что имеет смысл только тогда, когда большинство записей не имеют поля - в противном случае вы все равно не сэкономите много места в хранилище индекса)? created_at
звучит так, как если бы большинство записей имело это.
Добавлен разреженный индекс в созданный_каталог, поскольку это обязательное поле.
blockquote>На самом деле, все наоборот: редкий индекс требуется только тогда, когда поле является необязательным (и довольно редким).