我有一个mongo表,看起来像这样:
40 00 14 81 25 00 A0 65 00 00 00 26
40 00 14 81 25 00 A0 68 00 00 07 30
40 00 14 81 25 04 28 65 00 00 00 2A
40 00 14 81 25 04 28 68 00 00 00 2D
40 00 14 81 25 04 28 68 00 00 02 2F
40 00 14 81 25 04 28 68 00 00 03 30
40 00 14 81 25 04 28 68 00 00 04 31
40 00 14 81 25 04 28 68 00 00 05 32
40 00 14 81 25 04 28 68 00 00 07 34
40 00 14 81 25 04 28 69 00 00 01 2F
40 00 14 81 25 04 A0 68 00 00 07 34
40 00 14 81 25 08 9A 68 00 00 07 41
40 00 14 81 25 08 9C 68 00 00 07 43
40 00 14 81 25 08 9E 68 00 00 07 45
40 00 14 81 25 08 A0 68 00 00 00 31
40 00 14 81 25 08 A0 68 00 00 01 32
40 00 14 81 25 08 A0 68 00 00 02 33
40 00 14 81 25 08 A0 68 00 00 03 34
40 00 14 81 25 08 A0 68 00 00 07 38
40 00 14 81 25 08 A2 68 00 00 07 3A
40 00 14 81 25 08 A4 68 00 00 07 3C
40 00 14 81 25 08 A6 68 00 00 07 3E
40 00 14 81 25 08 A8 68 00 00 07 40
40 00 14 81 25 08 AA 68 00 00 07 42
40 00 14 81 25 08 AC 68 00 00 07 44
40 00 14 81 25 08 AE 68 00 00 07 46
40 00 14 81 25 09 A0 68 00 00 07 39
40 00 14 81 25 0A A0 68 00 00 07 3A
40 00 14 81 25 0C A0 68 00 00 07 3C
40 00 14 81 25 40 18 65 00 00 00 29
40 00 14 81 25 40 1A 65 00 00 00 2B
40 00 14 81 25 40 1C 65 00 00 00 2D
40 00 14 81 25 40 1E 65 00 00 00 2F
40 00 14 81 25 40 20 65 00 00 00 22
40 00 14 81 25 40 22 65 00 00 00 24
40 00 14 81 25 40 24 65 00 00 00 26
40 00 14 81 25 40 26 65 00 00 00 28
40 00 14 81 25 40 28 65 00 00 00 2A
40 00 14 81 25 40 2A 65 00 00 00 2C
40 00 14 81 25 40 2C 65 00 00 00 2E
40 00 14 81 25 40 2E 65 00 00 00 30
40 00 14 81 25 40 30 65 00 00 00 23
40 00 14 81 25 40 32 65 00 00 00 25
40 00 14 81 25 40 34 65 00 00 00 27
40 00 14 81 25 40 34 68 00 00 04 2E
40 00 14 81 25 80 1C 68 00 00 00 34
40 00 14 81 25 80 20 65 00 00 00 26
40 00 14 81 25 C0 20 65 00 00 00 2A
40 00 14 81 25 C0 28 68 00 00 02 37
我想查询该表以获取“id_pair”字段的所有不同级别,即:
[
{ "_id" : ObjectId("5899d847c014c5287df3819a"), "id_pair" : [ 1, 0 ]},
{ "_id" : ObjectId("5899d847c014c5287df3819b"), "id_pair" : [ 2, 0 ]
]
我尝试使用[
[ 1, 0 ],
[ 2, 0 ]
]
,但会返回db.woohoo.distinct('id_pair')
有没有办法返回“id_pair”因子的所有级别?我使用pymongo作为我的ORM,所以它支持这种查询的任何语法糖都是奖励。
答案 0 :(得分:2)
您需要运行一个聚合操作,将所有文档整体分组,然后使用 $addToSet
创建不同的集合,如下所示:
Mongo Shell
db.woohoo.aggregate([
{
"$group": {
"_id": 0,
"distinct_pairs": { "$addToSet": "$id_pair" }
}
}
])
示例输出
{
"_id" : 0,
"distinct_pairs" : [
[ 1, 0 ],
[ 2, 0 ]
]
}
pymongo聚合操作示例
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client['somedb']
collection = db.woohoo
pipe = [{'$group': {'_id': 0, 'distinct_pairs': {'$addToSet': '$id_pair'}}}]
result = next(collection.aggregate(pipeline=pipe))['distinct_pairs']
print(result)
client.close()