1

MongoDB から個別の値のみを取得するクエリを実行しようとしています。クエリを実行すると正しい値が返されますが、C API を使用して結果の BSON 配列を反復処理する方法がわかりません。

コードは次のとおりです。

bson query;
bson out;

bson_init(&query);
bson_append_string(&query, "distinct", "myCollection");
bson_append_string(&query, "key", "someKey");
bson_finish(&query);

if (mongo_run_command( conn, "myDB", &query, &out ) != MONGO_OK) {
   printf("mongo_run_command failed!\n");
   return 1;
}
else {
while(bson_iterator_next(out)){
   bson iterator;
   if (bson_find(iterator, &out, "someKey")) {
      printf("%s\n", bson_iterator_string(iterator));
   }
}
bson_print(&out);

bson_print(&out)正しい配列を出力しますが、配列をループするにはどうすればよいですか?

C API のドキュメントは非常に薄く、mongo_run_command.

どんな助けでも大歓迎です

4

1 に答える 1

0

私はそれを解決しました。ここで解決策を探している人にとって、私にとってうまくいったのは次のとおりです。

bson outSub[1];
bson_iterator iterator[1];
bson_iterator iterator2[1];
bson_type type;
const char *value;

// advance to the values array
bson_find(iterator, out, "values");
bson_iterator_subobject_init(iterator, outSub, 0);

bson_iterator_init(iterator2, outSub );
while (bson_iterator_more(iterator2)) {
   type = bson_iterator_next(iterator2);
   value = bson_iterator_string(iterator2);
   if (strlen(value) > 0) {
      printf( "Value: %s\n", value);
   }
}
bson_destroy(outSub);

C API に付属のサンプルをチェックアウトする価値はあります :)

于 2013-05-11T11:09:49.040 に答える