簡體   English   中英

MongoDB發現查詢性能問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM