更改 BSON 字段值 (C++)

发布于 2024-10-27 07:40:38 字数 111 浏览 5 评论 0原文

我正在测试 BSON 作为有线协议,并且我需要能够更改已创建的 BSONObj 上的一些值...问题是除了从头开始重新创建 BSONObj 之外,我找不到其他方法来执行此操作!

有什么建议吗?

I'm testing BSON as a wire protocol, and I need to be able to change some values on a already created BSONObj... the problem is I can't find a way to do this other than recreating the BSONObj from scratch!

Any tips?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

段念尘 2024-11-03 07:40:38

我收到了来自 10gen 的 Dwight Merriman 的回复:

一般来说它们是不可变的——
常见用法是
从 cpp 序列化/反序列化
您选择的对象。另请参阅 $set
和 $inc 但那些是服务器端的。

所以...我们就有了:)

I received a reply from Dwight Merriman, from 10gen:

generaly they are immutable -- the
common usage is to
serialize/deserialize from a cpp
object of your choice. See also $set
and $inc but those are server-side.

So... there we have it :)

一杯敬自由 2024-11-03 07:40:38

正如所说,无法更改现有的 BSONObj。但有一种解决方法可以做到这一点,而无需“从头开始”重新创建它。假设您有一个 BSONObj mybson。并且您想更改“somefield”字段。

mybson = mybson.removeField("somefield");
mybson = BSONObjBuilder().appendElements(mybson).append("somefield", newvalue).obj();

As it was said there is no way to change existing BSONObj. But there is a workaround to do it without recreating it "from scratch". Suppose you have a BSONObj mybson. And you want to change the field "somefield".

mybson = mybson.removeField("somefield");
mybson = BSONObjBuilder().appendElements(mybson).append("somefield", newvalue).obj();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文