我正在努力搜集當地超市的產品價格,以留意優惠。資料保存在 mongodb 中,但速度越來越慢。現在有大約 35,000 種產品被索引,總共有 100 萬條記錄,因為同一產品有價格歷史記錄。我插入的單個記錄如下所示:
{
_id: ObjectId("626557a944ea574f69b49324"),
title: 'Nutella 21042022 2015 food',
category: 'kitchen',
date: '21042022',
datetime: ISODate("2022-04-21T12:15:00.000Z"),
href: 'http://www.website.com/product/345345',
name: 'Nutella 800g',
time: '2015',
website: 'www.website.com'
}
我使用了超市網站上獨一無二的“標題”上的 upsert。
const query = { title: title };
const update = { $set: { title, href, name, date, time, datetime..., }};
const options = { upsert: true };
const res = await collection.updateOne(query, update, options);
log("Added: " title);
就像是
db.supermarket.find({name: "Nutella 800g"}).count()
回傳 176 并且需要幾秒鐘。我可以忍受,但如果它的大小擴大到 5 倍到 10 倍,那么資料庫將無法使用。所以顯然有更好的方法來構建資料。我做錯了什么明顯的事情?
編輯:
對索引的唯一更改是為“標題”添加一個。
db.supermarket.createIndex({title:1})
結果:
[
{ v: 2, key: { _id: 1 }, name: '_id_' },
{ v: 2, key: { title: 1 }, name: 'title_1' }
]
uj5u.com熱心網友回復:
您是否為標題創建了唯一索引?因為您在評論中提到的索引似乎是一個簡單的索引,而不是唯一的索引。這應該會大大加快您的更新速度。
為了加快查詢速度,您還可以在 name 列上創建索引,這有助于更快地檢索檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/467818.html
