我正在尝试使用MongoDB作为一种简单的缓存机制来存储少量记录。这些记录来自外部服务,很少改变(尽管它们有可能偶尔改变一次)。
有没有办法在集合上强制执行单个记录?由于ID可能会发生变化,因此我不希望将_id设置为API的ID,并且强制API ID的唯一性不会处理最终的ID更改。
我可以通过插入记录并删除所有不包含更新ID的记录来自行处理这个问题,但是我希望MongoDB中的某些功能可以处理这个问题。
我现在想避免添加专用的缓存解决方案,虽然看起来这比使用MongoDB这个用例更好。
答案 0 :(得分:0)
在考虑之后,我选择稍微改变一下。
我要将我想要的每个唯一记录放入一个集合中(这只是少数几个)。我要添加一个"组"我将用于确定我存储的记录类型的字段。我还要求所有记录都要求它,要求它是唯一的,并添加验证以确保它属于我想要的组。
有点令人困惑,这里有一点我的架构来展示我所说的:
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!' ] }
});