我尝试选择一个具有一些可选i18 n属性文档。
这意味着我喜欢接收文档的一些属性,如果存在“本地化”属性的所有“de”属性。
为了更好地理解,DB中的文档如下所示。
{
"_id" : ObjectId("643926af14c8821ad40f8b47"),
"price" : 1.256,
"vendor" : "Any Company",
"blocked" : false
"localized" : {
"en" : {
"name" : "water carafe",
"description" : "Contents: 1x ... up closure."
},
"de" : {
"name" : "Wasserkaraffe",
"description" : "Inhalt: 1x ... up-Verschluss."
},
"nm" : {
"name" : "Lorem ipsum dolor sit amet",
"description" : "At vero eo ... o duo dolores."
}
},
"PropertyB" : 124,
"SomePropertyC" : "importen property"
}
但我只对这个感兴趣:
{
"_id" : ObjectId("643926af14c8821ad40f8b47"),
"price" : 1.256,
"localized" : {
"de" : {
"name" : "Wasserkaraffe",
"description" : "Inhalt: 1x ... up-Verschluss."
}
}
}
主要的问题是,我只想选择几个根字段和“de”字段。如果“de”不可用,则应选择并返回“en”。如果两种情况都不存在,则应返回第一个最佳字段,这将是令人难以置信的。最后,我将文档转换为flattet新文档
在最后
{
"_id" : ObjectId("643926af14c8821ad40f8b47"),
"price" : 1.256,
"localized" : {
"de" : {
"name" : "Wasserkaraffe",
"description" : "Inhalt: 1x ... up-Verschluss."
}
}
}
最后,我将文档转换为一个新的文档。显然,$project(aggregation)是为此提供的。到目前为止,这工作得很好。但是,对文档的查询对我来说是不可能的。
有人知道这是怎么回事吗?
1条答案
按热度按时间w8rqjzmb1#
playground
如果“de”和“en”都缺失,那么我们取沿着的第一个。
playground