我正在将 BSON 测试为有线协议,并且我需要能够更改已经创建的 BSONObj 上的一些值......问题是除了从头开始重新创建 BSONObj 之外,我找不到其他方法!
有小费吗?
我收到了来自 10gen 的 Dwight Merriman 的回复:
一般来说,它们是不可变的——常见的用法是从您选择的 cpp 对象序列化/反序列化。另请参阅 $set 和 $inc 但它们是服务器端的。
因此,我们有它 :)
据说没有办法改变现有的 BSONObj。但是有一种解决方法可以做到这一点,而无需“从头开始”重新创建它。假设你有一个 BSONObj mybson。并且您想更改字段“somefield”。
mybson = mybson.removeField("somefield");
mybson = BSONObjBuilder().appendElements(mybson).append("somefield", newvalue).obj();