在 Python 2.x 中查找唯一的主机名



我正在从不同的数据源收集数据,这些数据都推送到MongoDB中的不同集合。所有数据源都有一个字段,用于存储特定系统的主机名。但是,有些只有主机名(即HOSTNAME1(,而另一些则具有主机名和域名(即 HOSTNAME1.XXX.XXX.COM(。我的任务是获取所有数据源中唯一主机名的计数。很有可能一个数据源可能会给我HOSTNAME1而另一个数据源可能会给我 HOSTNAME1.XXX.XXX.COM。我目前正在使用聚合方法"addtoSet"来过滤掉任何共享相同格式的重复主机名。关于如何解释不共享相同格式且不唯一的主机名的任何建议?使用 Python 2.x 的解决方案是首选,但不是必需的。

def uniqueCount (collName, uploadDate):
sysList = list(cursor.aggregate([ { '$match':{'UPLOAD_DATE':uploadDate} }, { '$group': {
'_id': collName,
'uniqueHosts': {'$addToSet': {'$toUpper':'$HOSTNAME'}}
}}]))
return len(sysList[0]['uniqueHosts'])

你非常接近 - 只需转换HOSTNAME字段。它可以完全在数据库端完成,使用$arrayElemAt$split

db.getCollection('collection').aggregate([
{$group: {
_id: ...,
// Set of HOSTNAME.split('.')[0]
uniqueHosts: {$addToSet: {$arrayElemAt: [{$split: ['$HOSTNAME', '.']}, 0]}}
}}
])

最新更新