在給定欄位中查詢 MongoDB 集合的唯一/不同子字串的最有效方法是什么?
示例檔案:
{"_id": "1234.abc.test1", "some_key": "some_value"}
{"_id": "1234.abc.test2", "some_key": "some_value"}
{"_id": "0420.def.test3", "some_key": "some_value"}
上面的檔案 ID 遵循內部命名空間約定。我需要知道命名空間的所有不同的第一個元素是什么。
對上述集合的查詢所需的輸出:
1234
0420
我試圖避免只row['_id'].split('.')[0]在之后的每一行上取回整個資料集。理想情況下,查詢應該只回傳這些子字串的不同串列。
uj5u.com熱心網友回復:
這個想法實際上與您的相同(即拆分.并獲得第一個元素),然后$group他們獲得不同的記錄。
db.collection.aggregate([
{
$project: {
first: {
"$arrayElemAt": [
{
"$split": [
"$_id",
"."
]
},
0
]
}
}
},
{
"$group": {
"_id": "$first"
}
}
])
這是Mongo 游樂場供您參考。
這是上述查詢的 PyMongo 實作:
pipeline = [
{"$project": {"first": {"$arrayElemAt": [{"$split": ["$_id", "."]}, 0]}}},
{"$group": {"_id": "$first"}}
]
result = self.collection.aggregate(pipeline=pipeline, allowDiskUse=False)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/392584.html
標籤:Python MongoDB mongodb-查询 pymongo-3.x
