我有一个从mongodb获取对象的Web服务,将其显示为json,允许用户编辑对象然后将对象保存回来。我正在尝试实现“另存为”按钮以发布允许用户对对象进行更改,然后将其另存为新对象。问题是,因为在执行POST请求时objectId没有改变,所以对象只是用相同的objectId覆盖预先存在的对象。
有没有办法在javascript中分配新的objectId?
在wcf服务上使用mongodb c#驱动程序完成实现。
答案 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数据,你可以这样做。