[英]Mongodb find query performance issue
我有要求,例如我需要搜索集合中動態的字段。
如下所示,在一個集合中,我想搜索title =“ Toshiba Satellite Pro 4600 PIII800”,但是標題將隨着文檔的不同而變化。
第一個文檔標題是指“ xyz”,它是該文檔的標題。
第二文檔標題是指“ abc”,它是該文檔的標題。
{
"_id" : ObjectId("5640bdec1b988de0be31724e"),
"xyz" : "Toshiba Satellite Pro 4600 PIII800",
"mappingData" : {
"title" : "xyz"
},
"_id" : ObjectId("5640bdec1b9435dfgdf43554b"),
"abc" : "Toshiba Satellite Pro 4600 PIII800",
"mappingData" : {
"title" : "abc"
}
}
通過以下查詢,我就能得到我所需要的。 但是一千萬個文檔要花2分鍾的時間。 請建議我提高查詢性能。
var titles = db.collection.distinct("mappingData.title"),
titleVal = "Toshiba Satellite Pro 4600 PIII800",
query = { "$or": [] };
query["$or"] = titles.map(function (t){
var q = {};
q[t] = titleVal;
return q;
});
db.collection.find(query);
在您的評論中,您提到在導入后使用映射數據更新數據。 如果將title
值復制到標准化字段,例如{ "title": "Toshiba Satellite Pro 4600 PIII800" }
,則可能會獲得更好的性能。 在向該字段添加索引之后,關於title
的標准查找查詢應運行得更快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.