我正在努力刮当地超市产品的价格,以保持对好的报价的关注。数据保存在mongodb中,但速度越来越慢。现在大约有35000种产品被编入索引,总共有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()
返回176,这需要几秒钟。我可以接受这种情况,但如果它的大小是5倍到10倍,那么数据库就无法使用。因此,显然有一种更好的方法来构造数据。很明显我做错了什么?
编辑:
只有对索引的更改才添加了一个"title“。
db.supermarket.createIndex({title:1})
结果:
[
{ v: 2, key: { _id: 1 }, name: '_id_' },
{ v: 2, key: { title: 1 }, name: 'title_1' }
]
发布于 2022-04-27 21:44:06
您是否为标题创建了唯一的索引?因为您在注释中提到的索引似乎是一个简单的索引,而不是唯一的索引。这会大大加快你的更新速度。
要加快查询速度,还可以在name列上创建索引,这将有助于更快地检索文档。
https://stackoverflow.com/questions/72035504
复制相似问题