mongodb c api没有插入没有错误

时间:2012-07-13 07:06:38

标签: c api mongodb g-wan

我正在尝试连接到mongodb并插入GET参数,使用G-WAN和mongodb的C驱动程序,我成功连接到mongodb,但我还没有成功插入任何数据。 我正在使用代码

mongo_write_concern_init(write_concern);
write_concern->w = 0;
mongo_write_concern_finish(write_concern);
bson b[1];
bson_init( b );
bson_append_new_oid( b, "_id" );
bson_append_string( b, "param1", param1);
bson_append_string( b, "param2", param2);

status = mongo_insert( conn, "mydb.mycol", b , write_concern);
bson_finish( b );
bson_destroy( b );
mongo_write_concern_destroy(write_concern);

连接成功,我可以通过mongod.log文件看到它;

[conn36] run command admin.$cmd { ismaster: 1 }
[conn36] command admin.$cmd command: { ismaster: 1 } ntoreturn:1 reslen:71 0ms
[conn36] end connection 127.0.0.1:50086

但没有别的,我不能得到任何错误消息或错误日志,当我调用上次错误时也在mongodb shell上

> db.getLastError()
null

返回null 不知道为什么会发生这种情况或欢迎任何解决方案,谢谢

1 个答案:

答案 0 :(得分:2)

此调用必须在mongo_insert():

之前
bson_finish( b );

否则你在这里有一个未完成的BSON对象:

status = mongo_insert( conn, "mydb.mycol", b , write_concern);

所以代码应该是

bson b[1];

/// Init
bson_init( b );
bson_append_new_oid( b, "_id" );
bson_append_string( b, "param1", param1);
bson_append_string( b, "param2", param2);

// Make this complete
bson_finish( b );

/// Insert
status = mongo_insert( conn, "mydb.mycol", b , write_concern);

/// Destroy the BSON obj
bson_destroy( b );