我有一张有这种数据格式的大桌子:
_id, ip, crateTs, txid, topic
我可以有一个带有多个IP和不同createT的txid。 我想要这样的结果:
txid (unique), ip, min(createTs)
其中ip是具有最小creatT的IP。
我使用此功能:
db.bigdata_collection.aggregate( [ { $match: { txid: { $ne: null } } }, { $group: { _id: {txid: "$txid"}, createTs: { $min: "$createTs" }, "ip": {"$push": "$$ROOT.ip"}} }, { $sort: { createTs: -1 }},{$out: "min_dates"} ], {allowDiskUse: true})
似乎运行良好,只是ip填充的是一个数组,其中所有ip均按createTs排序:
{ "_id" : { "txid" : "c79ac6597b3dc3d48c1dcb45409e1944456813763feed31bc088ae21341bc2ea" }, "createTs" : NumberLong("1555330238021"), "ip" : [ "3.8.9.247:8333", "176.9.139.80:8333", "31.130.250.38:8333", "78.45.46.181:8333", "120.76.24.5:8333", "103.255.45.49:8333", "172.104.33.80:8333", "165.227.117.68:8333", "178.163.48.144:8333", "92.62.231.253:8333", "193.70.32.13:8333", "47.254.152.192:8333", "188.250.66.207:8333", "74.67.240.204:8333", "90.240.79.110:8333", "217.232.243.242:8333", "178.163.48.144:8333" ] }
如何获得与最小createT匹配的单个ip条目?