В этом db.post.find('author.$id': 'foo')
отсутствует {}
, поэтому правильное предложение:
db.post.find({'author.$id': 'foo'})
Также это может быть достигнуто с помощью:
db.post.find({'author': DBRef("user", ObjectId('foo'))})
Но больше компактный и практичный первый способ.