mongodb - 查找具有已知子对象值和动态父对象的 mongoDB 文档
问题描述
我们将数据按国家代码存储在 mongodb 中。我们的文档将如下所示,
{
"_id" : ObjectId("5d82009cddf8d111b0f5c0f9"),
"title" : "Keystone Korner",
"CA" : {
"dlp" : 21.99,
"dlpCurrencyCode" : "CAD",
"sales" : {
"changeProceedsPriorDay" : 0.0,
"changeUnitsPriorDay" : 0,
"consumerPriceCurrencyCode" : null,
"last30Proceeds" : 0.0,
"last30Units" : 0,
"last365Proceeds" : 4.22,
"last365Units" : 4,
"last60Proceeds" : 0.0,
"last60Units" : 0,
"last7Proceeds" : 0.0,
"last7Units" : 0,
"last90Proceeds" : 0.0,
"last90Units" : 0,
"lastAvgSalesPrice" : 0.0,
"lastAvgSalesPricePrior" : 0.0,
"lastProceeds" : 0.0,
"lastProceedsPct" : 0.0,
"lastProceedsPrior" : 0.0,
"lastSalesDate" : "2021-08-23",
"lastUnits" : 0,
"lastUnitsPct" : 0.0,
"lastUnitsPrior" : 0
}
},
"US" : {
"dlp" : 17.99,
"dlpCurrencyCode" : "USD",
"sales" : {
"changeProceedsPriorDay" : 0.0,
"changeUnitsPriorDay" : 0,
"consumerPriceCurrencyCode" : null,
"last30Proceeds" : 4.18,
"last30Units" : 2,
"last365Proceeds" : 51.66,
"last365Units" : 19,
"last60Proceeds" : 4.18,
"last60Units" : 2,
"last7Proceeds" : 0.0,
"last7Units" : 0,
"last90Proceeds" : 7.37,
"last90Units" : 4,
"lastAvgSalesPrice" : 0.0,
"lastAvgSalesPricePrior" : 0.0,
"lastProceeds" : 0.0,
"lastProceedsPct" : 0.0,
"lastProceedsPrior" : 0.0,
"lastSalesDate" : "2021-08-25",
"lastUnits" : 0,
"lastUnitsPct" : 0.0,
"lastUnitsPrior" : 0
}
}
}
我在这里只提供了几个国家列表,但每个文档可以包含近 80-100 个不同的国家列表。
lastSalesDate
我们的要求是在每个国家/地区识别来自sales
父母的最新信息。因此,如果我们能够列出所有lastSalesDate
内容,我们可能能够对其进行排序并将其限制为 1
我们如何在不知道父母(美国、CA、GB 等国家代码)的情况下实现这一目标?
提前致谢。
解决方案
这个聚合
[
{
'$project': {
't': {
'$objectToArray': '$$ROOT'
}
}
}, {
'$project': {
'g': {
'$map': {
'input': {
'$filter': {
'input': '$t',
'as': 'tt',
'cond': {
'$and': [
{
'$ne': [
'$$tt.k', '_id'
]
}, {
'$ne': [
'$$tt.k', 'title'
]
}
]
}
}
},
'as': 'featuresF',
'in': {
'countyCode': '$$featuresF.k',
'lastSale': '$$featuresF.v.sales.lastSalesDate'
}
}
}
}
}
]
返回像
这 :
{
_id:"12313131313131313",
[{
countyCode:"US",
lastSale:"2021-08-25"
},
{
countyCode:"CA",
lastSale:"2021-08-23"
}]
}
因此,如果您想要其他内容,请提供一些示例首选输出,在此阶段之后,我们可以使用此数据查询或排序或执行等操作
推荐阅读
- python - 将自定义层和 py_function 与 opencv 方法一起使用
- windows - Powershell Windows 用户变量 appdata
- django - django-auth-ldap 无法验证 ldap 用户
- java - 从 PEM 字符串在 Java 中创建 DSA PublicKey
- flutter - 错误:无法在 pubspec.yaml 中找到目录条目
- java - 如何在热源上使用 groupBy
- reactjs - 在不使用 axios 拦截器的情况下使用 hoc withErrorHandler 的方法?
- sql - BigQuery:返回组中不同组的第一个值
- wordpress - 自定义帖子返回的帖子计数 0
- javascript - document.createElement('a').click() 在 Firefox 中不起作用