2016-11-05 1 views
0

У меня проблемы с stringify _id.Как вернуть _id как строку ObjectId, не зацикливая всю коллекцию?

После запроса коллекции с mongo.db.some_collection.find(), я получил что-то вроде следующего:

[{ 
    "_id": 
     { 
      "$oid": "581c0967e14c8b2118a31758" 
     }, 
    "name": "something" 
}, 
{ 
    "_id": 
     { 
      "$oid": "581c50aae14c8b214a3d2231" 
     }, 
    "name": "something else" 
}] 

Я хотел бы ответ API, чтобы быть как-то просто, как следующее, чтобы сделать вещи проще для переднего конца дэвов. Они не хотят делать что-то вроде item._id.$oid, чтобы получить фактический идентификатор.

[{ 
    "_id": "581c0967e14c8b2118a31758", 
    "name": "something" 
}, 
{ 
    "_id": "581c50aae14c8b214a3d2231", 
    "name": "something else" 
}] 

Я не хочу перебирать все результаты и манипулировать каждым элементом, чтобы получить то, что я хочу. Есть ли способ (функция?) Для преобразования _id без цикла?

Я нашел ответ here, но предложение заключается в том, чтобы манипулировать _id при вставке. На самом деле я не против, когда вставляем.

+0

После получения результата, попробуйте это, переменная v = JSON.stringifi (результат); JSON.parsr (v) –

+0

@ Parshuram Не JSON.stringify() метод JS? Я использую python. Плюс, дело в том, что я не хочу зацикливать результат. Я хочу получить строку '_id' как строку. – Levblanc

ответ

1

Вы можете использовать этап проекта агрегации pipeine, чтобы изменить поля, вернет вам ожидаемый выход .:

db.test.aggregate([ 
    { 
     $project: 
     { 
      name: 1, 
      _id: '$_id.oid' 
     } 
    } 
]) 
+0

Спасибо. Кажется, это путь. Но поле '_id' коллекции выглядит так: '' _id ": ObjectId (" 581c0967e14c8b2118a31758 ")' ('_id. $ Oid' - это конечный результат, который я получил после jsonify). Я не мог понять, как скрыть этот ObjectId до строки в спецификации проецирования. Нужна помощь. – Levblanc

+0

Какова ваша версия mongoDB? –

+0

@ Parshuram v3.2.9 – Levblanc

 Смежные вопросы

  • Нет связанных вопросов^_^