Ответ 1
В агрегированной функции нет прямого оператора для получения String из ObjectId.
После версии 2.6 Вы можете использовать метод ObjectId.toString()
для преобразования объекта ObjectId в строку. Сначала вы сопоставляете и проектируете свой ObjectID. Затем вы можете преобразовать этот идентификатор объекта в строку с помощью ObjectId.toString()
.
db.something.aggregate([{"$match":{'property': {$exists:true}}},{"$project":{"_id":1}}])
И затем используйте полученный объект и получите строку как ответ, используя ObjectId.toString()
Изменить: вы можете получить доступ к атрибуту str идентификатора объекта, используя
ObjectId("507f191e810c19729de860ea").str