在顺序MongoDB字段中查找漏洞

时间:2015-08-09 15:30:09

标签: mongodb sequence nosql

我的MongoDB集合包含顺序整数字段

我需要找到最佳方法来找到由于记录删除而发生的序列中的“漏洞”。

例如,如果我收集了这些文件:

{ _id: "aab", seq: 1 ... }, { _id: "aac", seq: 2 ... }, { _id: "aad", seq: 4 ... }

我做的下一个插入,需要是:

{ _id: "aae", seq: 3 ... }

1 个答案:

答案 0 :(得分:0)

您可以创建MongoDB Stored Function来实现此目标。

您可以创建一个JavaScript存储函数,该函数存储文档的“序列号”,并在某个集合“StoreDeletedSequenceNumCollection”中删除。

每当您对集合执行删除操作时,请确保调用“存储函数”,该函数实际存储将在集合“StoreDeletedSequenceNumCollection”中删除的文档的序号。

db.system.js.save( { _id: "DeletedSeqNum", 
                    value: function (seqNum) { 
                             db.StoreDeletedSequenceNumCollection.insert(
                                 { _id : seqNum}); return 1 ; } 
                   } 
                );

当您插入文档时,您可以检查“StoreDeletedSequenceNumCollection”中是否存在任何序列号,如果存在,您可以从中获取MINIMUM序列号并可用于插入,否则,如果“StoreDeletedSequenceNumCollection”为为空,您可以从实际集合中获取“MAXIMUM”序列号,并可以使用“MAXIMUM + 1”作为序列号进行插入。