class Department(Document): name = StringField() class User(Document): name = StringField() department_ref = ListField(ReferenceField(Department), default=list) user1 = User(name='user1').save() user2 = User(name='user2').save() user3 = User(name='boss').save() department1 = Department(name='department1').save() department2 = Department(name='department2').save() department3 = Department(name='department3').save() user1.department_ref = (department1, department2) user1.save() user2.department_ref = (department2, department3) user2.save() user3.department_ref = (department1, department3) -- I want to have users with departments like: 'department1', 'user1' 'department2', 'user1' 'department2', 'user2' 'department3', 'user2' unnest departments to order by departments, users