通过更改objectId将新的json对象POST到Mongodb

时间:2013-11-21 15:01:18

标签: javascript json mongodb

我有一个从mongodb获取对象的Web服务,将其显示为json,允许用户编辑对象然后将对象保存回来。我正在尝试实现“另存为”按钮以发布允许用户对对象进行更改,然后将其另存为新对象。问题是,因为在执行POST请求时objectId没有改变,所以对象只是用相同的objectId覆盖预先存在的对象。

有没有办法在javascript中分配新的objectId?

在wcf服务上使用mongodb c#驱动程序完成实现。

2 个答案:

答案 0 :(得分:1)

您可以尝试replicate the algorithm which is used for ObjectID generation,但有一种更简单的方法可以做到这一点。当您从文档中删除_id时,MongoDB将创建一个新的并将其保存在此文件下。您可以使用javascript delete关键字执行此操作:

delete yourDocument._id;

或者,您可以在C#端通过在保存之前为文档生成新的_id来执行此操作:

yourDocument.Set("_id", ObjectId.GenerateNewId());

答案 1 :(得分:0)

否您无法更改或删除mongodb文档中的_id字段。这是因为_id充当主键therefore is immutable。如果您确实要更改文档的_id,则需要删除此文档,并将其内容复制到新版本_id

P.S。我在这里谈论_id领域。如果你想更改任何其他字段,由于某种原因碰巧有ObjectId数据,你可以这样做。