값을 키로 사용하는 것은 좋지 않습니다. 값을 키로 사용하면 mongodb처럼 키 필드에서 값을 전달할 수 없으므로 값을 키로 사용하면 쿼리를 수행하기가 어렵습니다.
언어 코드 (NL, DE)가 제한되어있는 경우 아래 코드를 사용하여 originalLangCode에 따라 정렬 할 수 있습니다.
db.getCollection('name').aggregate(
[
{
$project: {
id_: 1,
corLang: 1,
corLat: 1,
translations: 1,
orignalsort: {
$concat: [{
$cond: [ { $eq: ["$originalLangCode", "NL"] }, "$translations.NL.title", "" ]
},{
$cond: [ { $eq: ["$originalLangCode", "DE"] }, "$translations.DE.title", "" ]
},{
$cond: [ { $eq: ["$originalLangCode", "FR"] }, "$translations.FR.title", "" ]
}]
}
}
},
{
$sort: {orignalsort: 1}
}
]
)
이 ** 상기 용액은 MongoDB의 버전보다 3.3.5 용이며 당신이 아니라 최신 안정 버전은 향후 버전 3.3.5에서 3.2
입니다 사용해야 우리는 $ 스위치 연산자를 사용할 수 있습니다, 스위치 솔루션은 아래 코드와 같습니다 **
db.getCollection('name').aggregate(
[
{
$project: {
id_: 1,
corLang: 1,
corLat: 1,
translations: 1,
orignalsort: {
$switch: {
branches: [
{
case: { $eq: ["$originalLangCode", "NL"] },
then: "$translations.NL.title"
},
{
case: { $eq: ["$originalLangCode", "DE"] },
then: "$translations.DE.title"
},
{
case: { $eq: ["$originalLangCode", "FR"] },
then: "$translations.FR.title"
},
],
default: "$translations.NL.title"
}
}
}
},
{
$sort: {orignalsort: 1}
}
]
)
로컬 시스템에서 첫 번째 코드를 테스트했지만 스위치 케이스를 선택하지 않았습니다.
[질문 할 때 SO의 코드 이미지를 업로드 할 수없는 이유는 무엇입니까?] (http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code) -on-so-when-asking-a-question) – chridam
그래서 "originalLangCode"가 어떤 값으로 정렬 되길 원하나요? –
모든 문서에서 언어 수가 제한됩니까? –