2

G-WAN と mongodb の C ドライバーを使用して、mongodb に接続して GET パラメータを挿入しようとしていますが、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シェルでもエラーメッセージやエラーログを取得できません

> db.getLastError()
null

null を返します なぜこれが起こるのか、またはあなたがアドバイスできる解決策は大歓迎です、ありがとう

4

1 に答える 1

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 );
于 2012-07-13T10:32:50.733 に答える