看c++的API中, bsonobjbuilder 有 接口如下:
BSONObjBuilder & bson::BSONObjBuilder::append | ( | const StringData & |
| | const vector< T > & |
|
有个std::string 的vector 对象想以数组的形式append 生成BSON对象, 所以使用了这个接口, 但是使用中core了:
调用如下
cbd.append("$in",_keys);
condition.append("_id",cbd.obj());
core中信息如下:
#0 isValid (this=, ids=, read_time=0x7fbed1c6d7a8) at /usr/local/sequoiadb/include/bson/bson-inl.h:244
244 return x > 0 && x
Missing separate debuginfos, use: debuginfo-install boost-domob-1.44.0-1.el6.x86_64 glibc-2.12-1.107.el6.x86_64 keyutils-libs-1.4-4.el6.x86_64 krb5-libs-1.10.3-10.el6.x86_64 libcom_err-1.41.12-14.el6.x86_64 libevent-1.4.13-4.el6.x86_64 libgcc-4.4.7-3.el6.x86_64 libiconv-domob-1.13.1-1.el6.x86_64 libselinux-2.0.94-5.3.el6.x86_64 libstdc++-4.4.7-3.el6.x86_64 log4cpp-domob-1.1.1-1.el6.x86_64 openssl-1.0.0-27.el6.x86_64 thrift2.0.0-domob-2.0.0-1.el6.x86_64 zlib-1.2.3-29.el6.x86_64
(gdb) bt
#0 isValid (this=, ids=, read_time=0x7fbed1c6d7a8) at /usr/local/sequoiadb/include/bson/bson-inl.h:244
#1 init (this=, ids=, read_time=0x7fbed1c6d7a8) at /usr/local/sequoiadb/include/bson/bsonobj.h:511
#2 init (this=, ids=, read_time=0x7fbed1c6d7a8) at /usr/local/sequoiadb/include/bson/bsonobj.h:525
#3 BSONObj (this=, ids=, read_time=0x7fbed1c6d7a8) at /usr/local/sequoiadb/include/bson/bsonobj.h:107
#4 obj (this=, ids=, read_time=0x7fbed1c6d7a8) at /usr/local/sequoiadb/include/bson/bsonobjbuilder.h:615
#5 Dmp::UidServerOperation::read_uid (this=, ids=, read_time=0x7fbed1c6d7a8) at src/uid_op.cpp:485
uid_op.cpp 485行: bson::BSONObj cd=condition.obj();
但484 行 打log的记录: DOMOB_WRITE_DEBUG_LOG("the condition:%s",condition.obj().toString().c_str()); 可以正确执行,实际log输出:
the condition:{ "_id": { "$in": [ "66D5A048-FB87-4408-8672-93C8976BC074", "FCDE568E801B3763AD45C8B30113511A" ] } }
感觉符合要求。
请问这个是怎么回事呢?