У меня есть документ ниже в БД,
db.inventory.insertMany([
{ "stageId" : 1 , "eventId" : 1 , "type" : "DataCard", "content " : { "en" : "English Content" }},
{ "stageId" : 1 , "eventId" : 1 , "type" : "DataCard", "content " : { "en" : "English Content", "fr" : "French Content" }},
])
Мне нужно спроецировать контент на основе существования полей. Если французский контент существует, то французский, иначе Engli sh
{
type : "DataCard",
content : "English Content"
}
{
type : "DataCard",
content : "French Content"
}
Я использовал запрос ниже,
db.getCollection('inventory').aggregate([{ $project: { content: {$ifNull: ['$content.fr', '$content.en'] } , type : 1}}])
Но он возвращает только поле типа.
Is есть ли способ охватить этот сценарий?
Даже простой запрос для проецирования содержимого engli sh во всех случаях проецирует только поле типа
db.getCollection('inventory').aggregate(
[
{
$project : {
"type" : "$type",
"content" : "$content.en"
}
}
]
)