在集合中强制执行单个记录

Enforcing Single Record In Collection

我正在尝试使用 MongoDB 作为一种简单的缓存机制来存储少量记录。这些记录来自外部服务并且很少更改(尽管它们有可能每隔一段时间更改一次)。

有没有办法在集合上强制执行单个记录?由于 ID 可能会发生变化,我不想将 _id 设置为 API 的 ID,并且对 API ID 强制执行唯一性不会处理最终的 ID 更改。

我可以通过更新记录并删除所有不包含更新 ID 的记录来自己处理这个问题,但是我希望 MongoDB 中有某种功能可以处理这个问题。

我想暂时避免添加专用的缓存解决方案,尽管对于这个用例来说这似乎比使用 MongoDB 更好。

考虑之后,我选择了稍微不同的处理方式。

我打算将我想要的每条唯一记录放入一个集合(这只是少数)。我将添加一个 "group" 字段,用于确定我存储的记录类型。我还将要求所有记录都使用它,要求它是唯一的,并添加验证以确保它属于我想要的组。

有点令人困惑,这里有一些我的架构来说明我在说什么:

isValidSet = function(val) {
  [ 'branch', 'department', 'division', 'group' ].indexOf( input || '' ) > -1
};

cacheSchema = new Schema({
  code : { type : String, required : true },
  name : { type : String, required : true },
  shortName : { type : String, required : true },
  group : { 
    type : String, 
    required : true, 
    unique : true, 
    validate : [ isValidGLSet, 'Invalid GL group!' ] }
});