gpt4 book ai didi

mongodb - 索引一个最初在 MongoDB 中不存在的字段

转载 作者:行者123 更新时间:2023-12-04 18:06:56 26 4
gpt4 key购买 nike

我有一个集合,最初我们有一个评论文档的以下结构

{
_id:ObjectId(...),
comment:"hi, test comment",
crBy:ObjectId(...)
}

现在当管理员审查这个时,状态字段被添加到它更新文档到

   {
_id:ObjectId(...),
comment:"hi, test comment",
crBy:ObjectId(...),
status:"approved"
}

由于某些原因,我最初无法获得状态,必须在管理员审核它时输入它,并且它带有已批准或未批准的值

所以现在获取用户创建的所有评论并获得批准的查询就像...... db.reviews.find({"crBy":ObjectId(...),"status":"approved"})

我正在通过创建包含 crBy 和状态字段的索引来优化读取

我的问题是:

1.Am i creating the index in the right way?

2. I have read that indexes should contain fields that don't change. So in my case status field gets inserted afterwards. How does it
impact my performance?

3. Considering my case, what do you suggest to be the best possible way to optimize reads in such a scenario where a field comes later
on?

提前致谢

最佳答案

没有什么能阻止您在不存在的键上创建索引。鉴于您的查询,您的索引应该反射(reflect)它

db.collection.ensureIndex({crBy: 1, status: 1}, {background: 1})

我添加了后台选项。这将确保在重建此索引时,不会阻塞其他操作。它仍然会对状态更新的性能产生影响。建议在不改变的东西上建立索引的唯一原因是因为在写入时重建索引的开销,在这种情况下,你会因为这个索引而获得读取速度,所以这是值得的。

关于mongodb - 索引一个最初在 MongoDB 中不存在的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24088570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com