Mongodb 100 万条记录越来越慢

Mongodb with 1 million records is getting slow

我正在努力搜集当地超市的产品价格,以留意优惠信息。数据保存在 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'
}

我在“标题”上使用了超市网站上独一无二的更新。

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()

returns 176 需要几秒钟。我可以接受,但如果它的大小扩展到 5 倍到 10 倍,那么数据库将无法使用。所以显然有更好的方法来构造数据。我做错了什么明显的事情?

编辑:

索引的唯一变化是为“title”添加了一个索引。

db.supermarket.createIndex({title:1})

结果:

[
  { v: 2, key: { _id: 1 }, name: '_id_' },
  { v: 2, key: { title: 1 }, name: 'title_1' }
]

您是否为您的作品创建了唯一索引?因为您在评论中提到的索引似乎是一个简单的索引,而不是唯一的索引。这应该会大大加快您的更新速度。

为了加快查询速度,您还可以在名称列上创建索引,这应该有助于更快地检索文档