【发布时间】:2022-01-23 18:38:30
【问题描述】:
我使用 MongoDB,我有这样一个集合。首先,我选择 tableId = 1 的所有文档,然后按 itemId 对它们进行分组 - 我得到 2 组 2 个文档。总而言之,我需要将这些组留在有此类文件的地方:1)城市=伦敦,2)年份大于或等于某个值。为此,我需要将值从字符串转换为数字。如何做到这一点?
在我下面的查询中,比较年份的部分是错误的。
[
{
"tableId": 1,
"itemId": 10,
"name": "City",
"value": "London"
},
{
"tableId": 1,
"itemId": 10,
"name": "StartYear",
"value": "2017"
},
{
"tableId": 1,
"itemId": 20,
"name": "City",
"value": "Paris"
},
{
"tableId": 1,
"itemId": 20,
"name": "StartYear",
"value": "2018"
},
{
"tableId": 2,
"itemId": 30,
"name": "City",
"value": "Madrid"
},
{
"tableId": 2,
"itemId": 30,
"name": "StartYear",
"value": "2016"
}
]
我的查询是:
db.collection.aggregate([
{
"$match": {
tableId: 1
}
},
{
"$group": {
_id: {
itemId: "$itemId"
},
result: {
$push: "$$ROOT"
}
}
},
{
"$match": {
$and: [
{
"result": {
$elemMatch: {
"name": "City",
"value": "London"
}
}
},
{
"result": {
$elemMatch: {
$and: [
{
"name": "StartYear"
},
{
$lte: [
{
$toDouble: "$value"
},
2018
]
}
]
}
}
}
]
}
}
])
【问题讨论】:
标签: mongodb mongodb-query