2016-11-05 1 views
0

stringify _id에 문제가 있습니다.전체 컬렉션을 반복하지 않고 _id를 ObjectId 문자열로 반환하는 방법은 무엇입니까?

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

나는 프런트 엔드 개발자들에 대한 일을 더 쉽게하기 위해 다음과 같은 간단한 것으로 API 응답을 싶습니다

mongo.db.some_collection.find()으로 컬렉션을 조회 한 후, 나는 다음과 같은 일을 얻었다. 그들은 실제 ID를 얻기 위해 item._id.$oid과 같은 것을하고 싶지 않습니다.

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

나는 모든 결과를 통해 루프를 원하고 내가 원하는 것을 얻기 위해 모든 항목을 조작하지 않습니다. 반복하지 않고 _id을 변환하는 방법 (함수?)이 있습니까?

답변이 here인데 삽입 할 때 _id을 조작하는 것이 좋습니다. 삽입 할 때 실제로는 상관 없습니다.

+0

를 반환합니다, 필드를 바꿀 집계 pipeine에서 프로젝트 단계를 사용할 수 있습니다,이, var에 V = JSON.stringifi (결과를) 시도; JSON.parsr (v) –

+0

@Parshuram JSON.stringify() JS 메서드가 아닌가요? 파이썬을 사용하고 있습니다. 게다가, 요점은, 결과를 반복하고 싶지 않다는 것입니다. '_id' 문자열을 얻고 싶습니다. – Levblanc

답변

1

당신은 결과를 얻은 후에 당신에게 예상되는 출력 :

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