如何在 mongoDB 中将文档标记为已标记/已删除

Posted

技术标签:

【中文标题】如何在 mongoDB 中将文档标记为已标记/已删除【英文标题】:How to mark documents as marked/deleted in mongoDB 【发布时间】:2019-02-14 23:33:30 【问题描述】:

所以我有几个选择可以暂时隐藏(禁用)或永久隐藏(删除)我的查询中的文档。

我不打算“物理地”删除数据,除非是在进行维护时。

我能做什么:

添加两个属性,例如:“disabled: true”和“deleted:false” 添加一个状态字段,例如:“status: 'deleted|disabled|other'” 扭转局面(仅显示活动文档),例如:“status: 'active'”或“active: true”。

查询时,我可以在每个查询中查询这些属性,也可以查询一个只返回“活动”文档的 mongoDB 视图。

数据库的目的是帮助用户找到他们可能想加入的项目。我也使用 mongoose,但许多查询可能是原生 mongoDB 查询。

那么就性能、可扩展性和潜在工作量而言,“最智能的解决方案”可能是什么?

【问题讨论】:

【参考方案1】:

我会选择状态字段。 它更通用,如果您需要添加额外的值,则不需要创建新字段,如果您想要拥有多个状态(如 ACTIVE 和 ENABLED),您甚至可以将状态字段设置为一个数组。

我不明白“查询 mongoDB 视图”,但对我来说解决方案非常简单。 只需添加到曾经查询db.collection.find(..., "status" : "deleted")

【讨论】:

在 SQL 中我习惯了视图,mongodb 似乎也有它们:docs.mongodb.com/manual/core/views。视图的好处之一:我可以随时更改它们而无需接触代码。或者至少我只需要触摸一次。 状态数组或状态对象也可能是一个很好的解决方案。将是最灵活的。 对,我不知道你也可以在 Mongo 中使用它。谢谢!

以上是关于如何在 mongoDB 中将文档标记为已标记/已删除的主要内容,如果未能解决你的问题,请参考以下文章

如何在 RAML 中将 REST 服务标记为已弃用

delphi 如何将属性标记为已弃用?

如何在 Delphi 中将单个枚举值标记为已弃用

是否可以在打字稿中将某些内容标记为已弃用?

玩 framework 2.0 演进,如何在 PROD 中将不一致的状态标记为已解决

在 Corda 中将状态标记为已使用而不更改其内容