0
我需要一個MongoDB的服務器上運行以下查詢的MongoDB查詢performce:
QUERY = {
"$and" : [
{"x" : {'$gt' : 1.0}},
{"y" : {'$gt' : 0.1}},
{"$where" : 'this.s1.length < this.s2.length+3'}
]
}
這個查詢是很慢的,由於JavaScript表達式其中服務器需要在集合中的每個文檔上執行。
有沒有什麼辦法讓我優化它?
我曾考慮過使用$size
運算符,但我不確定它是否適用於字符串,而且我更不確定如何比較它在一對字符串上的輸出(如此處所示) 。
這是需要我的腳本的其餘部分,在案例:
from pymongo import MongoClient
USERNAME = ...
PASSWORD = ...
SERVER_NAME = ...
DATABASE_NAME = ...
COLLECTION_NAME = ...
uri = 'mongodb://{}:{}@{}/{}'.format(USERNAME,PASSWORD,SERVER_NAME,DATABASE_NAME)
mongoClient = MongoClient(uri)
collection = mongoClient[DATABASE_NAME][COLLECTION_NAME]
cursor = collection.find(QUERY)
print cursor.count()
的pymongo
版本是3.4。
謝謝:)
將這個新數據插入到數據庫? – goodvibration
爲什麼?你需要取或插入? –
順便說一句,正如你可以在我的查詢中看到的,我正在試圖聚合那些's1'的長度小於s2' + 3的長度的情況。我怎樣才能調整你的解決方案來做到這一點? – goodvibration