直接从BSONElement获取BSONArray

时间:2016-03-30 11:13:20

标签: c++ mongodb

BSONElement类有一个embeddedObject()方法在BSON元素中返回BSONObj“encoded”,例如:

// being 'be' a BSONElement object
BSONObj b = be.embeddedObject();

但是,有时BSONElement对象会编码BSONArray(来自BSONObj的派生类),我想直接得到它。像

这样的东西
// being 'be' a BSONElement object
BSONArray b = be.embeddedArray();

但我在the MongoDB C++ driver documentation reference that I know中找不到embeddedArray()或类似内容。

我在Array()类中找到了BSONElement方法,但它返回std::vector<BSONElement>并根据向量内容编写等效的BSONArray会更加复杂(考虑到我们认为向量中的每个元素可以是不同类型的,即字符串,数字,其他BSON对象或数组等。)

有没有办法直接在BSONElement中“编码”BSONArray?

1 个答案:

答案 0 :(得分:0)

似乎可以通过以下方式投射到BSONArray b = (BSONArray) be.embeddedObject();

type()

此演员表在一般情况下是不安全的,但与be结合使用,我们可以确保.columns { height: 400px; -webkit-columns: 300px 2; -moz-columns: 300px 2; columns: 300px 2; } 实际上持有嵌入式数组。

但是,我仍然想知道是否有更聪明的方法......请随意用其他方法为这个问题添加新的答案。