MongoDB两个相同的记录

时间:2014-06-29 09:59:16

标签: node.js mongodb

我正在做一个由Nodejs和MongoDB支持的项目。我是MongoDB的新手,我不知道为什么当我发帖时,我经常(几乎总是)在集合中获得两个相同的记录。两个记录仅因ID而异,例如ObjectId("53aefb0fc68a0810504d2066")53aefb0fc68a0810504d2066,这是正常的还是我做错了什么?谢谢你的任何指示。

这是一些节点代码:

server.js:

app.post("/:collection", function (req, res) {
    var object = req.body;
    var collection = req.params.collection;

    collectionDriver.save(collection, object, function (err, docs) {
        if (err) {
            res.send(400, [err, object]);
        } else {
            res.send(201, docs);
        }
    });
});

collectionDriver:

save: function(collectionName, obj, callback) {
    this.getCollection(collectionName, function(error, the_collection) {
        if( error ) callback(error);
            else {
                obj.created_at = new Date();
                the_collection.insert(obj, function() {
                    callback(null, obj);
            });
        }
    });
},

getCollection: function(collectionName, callback) {
    this.db.collection(collectionName, function(error, data) {
        if (error) {
            callback(error);
        } else {
            callback(null, data);
        }
    });
},

1 个答案:

答案 0 :(得分:2)

每当你向MongoDB询问save没有_id字段的对象时,它会自动为该字段生成一个全新的全局唯一ObjectID,并将该对象保存在该ObjectID下。

如果要使用save更新现有文档,则需要确保_id字段填充了要更新的文档的_id。< / p>

或者,您可以在您认为相关的字段上创建unique index,以确定哪些是重复内容,哪些内容不重复。但是,在这种情况下,尝试保存现有文档将引发错误而不是替换文档。