我有一个数据库的文章与许多关键字,相关的是年份和期刊。
我想计算最古老的期刊上发表了多少篇文章,以及该期刊的标题是什么。
因此,首先我需要计算出年份值最早的文章,然后从该文章中获取期刊名称,然后我需要将我的整个收藏与该期刊名称进行匹配,并计算我有多少个结果。
我目前仍然在将我的整个集合与上一个查询的结果进行匹配。
count = articles_collection.aggregate([
{
"$match": {
"journal": {
"$match": {
"year": {
"$ne": numpy.NaN
}
},
"$sort": {
"year": 1
},
"$limit": 1,
"$getField": "$journal"
}
}
}
])
for doc in count:
print(doc)
但这会产生以下错误:
OperationFailure: unknown operator: $match, full error: {'ok': 0.0, 'errmsg': 'unknown operator: $match', 'code': 2, 'codeName': 'BadValue'}
一篇文章看起来像这样:
{ "_id": { "$oid": "638d067e5bdfe572e919109a" },
"key": "journals/sigmod/FeketeR22",
"author": [ "Alan D. Fekete", "Uwe Röhm" ],
"title": "Teaching about Data and Databases: Why, What, How?",
"journal": "SIGMOD Rec.",
"volume": "51",
"number": "2",
"year": "2022"
}
我需要找到具有最早“年份”值的文章,从该文章中获取“期刊”值,然后获取集合中以该期刊为值的所有文章。
1条答案
按热度按时间6jygbczu1#
一种选择是先分组。如果你需要计算你的
NaN
,你可以用一个不能是前一年的值来替换它们(比如5000):了解它在playground example上的工作原理