반응형
$project가 있는 Mongo Aggregate 이름 바꾸기 필드?
집계 결과를 생성하지만 일부 필드의 이름을 바꾸려고 합니다.
db.articles.aggregate([
{$match: {
"model.lang": "en"
}},
{$project: {
"_id": 0,
"model.title": 1,
"model.address_en": "$address",
"model.date": { $dateToString: { format: "%Y-%m-%d", date: "$date" } }
}}
]);
보시다시피 "model.title"을 "title"로, "model.address_en"을 "address"로, "model.date"를 "date"로 각각 이름을 바꾸려고 노력하고 있습니다.
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
내가 뭘 잘못하고 있는 거지?
의 문서를 고려할 때articles
{
"_id" : ObjectId("56cea763d43e3500f6768482"),
"name" : "aaa",
"model" : {
"lang" : "en",
"title" : "b",
"date" : ISODate("2016-02-25T07:04:03.414Z")
},
}
"model.title"을 "title"로, "model.address_en"을 "address"로, "model.date"를 "date"로 바꿉니다.
db.articles.aggregate([
{$match: {'model.lang': 'en'}},
{$project: {
_id: 0,
'title': '$model.title',
'date': {$dateToString: {format: '%Y-%m-%d', date: '$model.date'}}
}}
])
결과는
{ "date" : "2016-02-25", "title" : "b" }
{ "date" : "2016-02-25", "title" : "c" }
그냥 이것을 사용하시면 됩니다.
db.articles.aggregate([
{
$match: {
"model.lang": "en"
}
},
{
$project: {
"_id": 0,
"title": "$model.title",
"address": "$model.address_en",
"date": {
$dateToString: {
format: "%Y-%m-%d", date: "$model.date"
}
}
}
}
]);
정답.
설명하라.
당신의 코드는 당신이 말한 것과 반대로 작동합니다.당신의 코드 안에서 그것을 설명하겠습니다.
db.articles.aggregate([
{$match: {
"model.lang": "en"
}},
{$project: {
"_id": 0,
"model.title": 1, // Wanted: title <- model.title // Result: model.title <- model.title // it should show you title inside model object
"model.address_en": "$address", // Wanted: address <- model.address_en // Result: model.address_en <- address // address doesn't exist! thats why it shows nothing
"model.date": { $dateToString: { format: "%Y-%m-%d", date: "$date" } } // Wanted: date <- model.date // Result: model.date <- date // date doesn't exist! thats why it shows nothing
}}
]);
포함할 필드가 없는 경우 $project는 해당 필드를 무시하므로 출력에 원하는 값이 표시되지 않습니다.
언급URL : https://stackoverflow.com/questions/35620274/mongo-aggregate-rename-field-with-project
반응형
'sourcecode' 카테고리의 다른 글
블로그를 위한 mongodb 스키마 설계 (0) | 2023.07.17 |
---|---|
순환 가져오기는 콜 스택에서 더 위쪽으로 작동하지만 가져오기 오류는 더 아래쪽으로 발생하는 이유는 무엇입니까? (0) | 2023.07.17 |
쿼리 세트를 정렬하는 좋은 방법은 무엇입니까? - 장고 (0) | 2023.07.17 |
파이썬에서 int를 Enum으로 변환하는 방법은 무엇입니까? (0) | 2023.07.17 |
중첩된 사전의 항목에서 판다 데이터 프레임 구성 (0) | 2023.07.17 |