У меня есть локализация , где каждый документ представляет собой пару с ключом, переведенную на несколько языков.mongodb coalesce equivalent (with mongoose)
Это представление JSON:
[
{ "_id": "form.password" , "en": "Password" , "he": "סיסמא" , "ru": "пароль" }
{ "_id": "form.email" , "en": "Email" , "he": "אימייל" },
{ "_id": "form.firstname", "en": "First Name", "he": "שם פרטי", "ru": "Имя" }
]
Это мангуст схема:
new Schema({
_id: {
type: String,
required: true
},
en: String,
he: String,
ru: String
});
Мне нужно, чтобы все ключевые значения на каждый язык с express.js:
app.get('/api/locals', function(req, res) {
Local.find().select(req.query.language).exec(function(err, data) {
res.json(data);
});
});
Это нормально работает , если каждый язык имеет значения для всех ключей, но я хочу сделать fallback где, если какой-либо язык не имеет значения для определенного ключа, тогда будет использовано английское значение.
Я думал, может быть, мне следует использовать агрегацию или mapReduce, но я не знаю, как реализовать это с помощью мангуста.
С SQL я использовал, чтобы написать этот запрос:
SELECT key, COALESCE($language , en) as value FROM locals
Спасибо заранее.
Существует не один еще, есть JIRA для этого, но я забыл, где он сейчас – Sammaye