[MONGODB] MongoDB의에서 검색 / 프로젝션을 수행 할 때 어떻게 필드의 이름을 변경합니까?
MONGODBMongoDB의에서 검색 / 프로젝션을 수행 할 때 어떻게 필드의 이름을 변경합니까?
그것은 찾기 쿼리에서 반환 필드의 이름을 이름을 변경 할 수 있습니까? 그러나 나는 내가 접근하고있어 문서를 변경하지 않는 것처럼, $ 이름 바꾸기 같은 것을 사용하고 싶습니다. 난 그냥, 다른 SQL에서 SELECT COORINATES AS COORDS처럼 작동 뭔가를을 검색합니다.
내가 지금 무엇 :
db.tweets.findOne({}, {'level1.level2.coordinates': 1, _id:0})
{'level1': {'level2': {'coordinates': [10, 20]}}}
내가 반환하고자하는 것은 : { '좌표': [10, 20]}
해결법
-
==============================
1.그래서 기본적으로 대신 .find의 .aggregate을 () ()를 사용하여 :
그래서 기본적으로 대신 .find의 .aggregate을 () ()를 사용하여 :
db.tweets.aggregate([ { "$project": { "_id": 0, "coords": "$level1.level2.coordinates" }} ])
그리고 그것은 당신에게 당신이 원하는 결과를 제공합니다.
MongoDB를 2.6 이상 버전은 찾기가하는 것처럼는 "커서"를 반환합니다.
자세한 내용은 $ 프로젝트 및 기타 집계 프레임 워크 연산자를 참조하십시오.
대부분의 경우 당신은 단순히 커서를 처리 () 할 때 .find에서 반환되는 필드의 이름을 변경해야합니다. 예를 들어 자바 스크립트를 들어, 당신은이 작업을 수행 할 () .MAP 사용할 수 있습니다.
쉘에서 :
db.tweets.find({},{'level1.level2.coordinates': 1, _id:0}).map( doc => { doc.coords = doc['level1']['level2'].coordinates; delete doc['level1']; return doc; })
이상의 인라인 :
db.tweets.find({},{'level1.level2.coordinates': 1, _id:0}).map( doc => ({ coords: doc['level1']['level2'].coordinates }) )
이것은 서버에 추가적인 오버 헤드를 회피하고, 추가 처리 오버 헤드가 검색된 데이터의 실제 크기 감소의 이득을 능가 것 인 그러한 경우에 사용되어야한다. 이 경우 (대부분의)는 최소한 따라서 더 나은 재 처리 구조 조정 커서 결과에있을 것이다.
-
==============================
2.@Neil 룬에 의해 언급 한 바와 같이 이것은 집계 파이프 라인으로 달성 될 수있다 :
@Neil 룬에 의해 언급 한 바와 같이 이것은 집계 파이프 라인으로 달성 될 수있다 :
그리고 몽고 4.2부터 시작하여 $ replaceWith 집계 연산자는 하위 문서에서 문서를 대체하는 데 사용할 수 있습니다 :
// { level1: { level2: { coordinates: [10, 20] }, b: 4 }, a: 3 } db.collection.aggregate( { $replaceWith: { coords: "$level1.level2.coordinates" } } ) // { "coords" : [ 10, 20 ] }
당신이 findOne을 언급 때문에, 당신은 또한 다음과 같은 일에 결과 문서의 수를 제한 할 수 있습니다 :
db.collection.aggregate([ { $replaceWith: { coords: "$level1.level2.coordinates" } }, { $limit: 1 } ])
이전 몽고 4.2과 몽고 3.4부터 $ replaceRoot은 $ replaceWith 대신 사용할 수 있습니다 :
db.collection.aggregate( { $replaceRoot: { newRoot: { coords: "$level1.level2.coordinates" } } } )
from https://stackoverflow.com/questions/23784370/how-do-i-rename-fields-when-performing-search-projection-in-mongodb by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] Node.js를 - 여러 비동기 호출에 대한 대기 (0) | 2019.12.14 |
---|---|
[MONGODB] 몽고에서는 DBRef으로 조회 $합니다 (0) | 2019.12.14 |
[MONGODB] pyMongo과 ISODate 만들기 (0) | 2019.12.14 |
[MONGODB] 몽구스 모델에서 스키마 특성을 받고 (0) | 2019.12.14 |
[MONGODB] MongoDB의 검색을 사용하여 자동 완성 기능을 구현 (0) | 2019.12.14 |