1

MongoDB では 1 つのフィールドのみを選択できることを読みました。

db.records.find({TimeStampSec {$lt:10} , {ch11:1})

たとえば、次のクエリは、TimeStampSec<10 を持つすべてのオブジェクトのフィールド ch11 を返します。しかし、Cドライバーに変換する方法がわかりません。私はこれを試しました:

bson_init( &query );
 bson_append_start_object( &query, "TimeStampSec" );
 bson_append_int( &query, "$lt", 10 );
 bson_append_finish_object( &query );

 bson_append_int( &query, "node_id", 1 );

 bson_finish( &query );

しかし、うまくいきません。別のオブジェクトを作成する必要がありますか?

4

2 に答える 2

0

これは私にとってはうまくいきます。

bson query,selection;
bson_init( &query );
  bson_append_start_object( &query, "TimeStampSec" );
    bson_append_int( &query, "$lt", 10 );
  bson_append_finish_object( &query );
bson_finish( &query );

bson_init( &selection);
    bson_append_int( &selection, "ch11", 1 );
bson_finish( &selection);

    mongo_cursor *cursor=NULL;

    cursor = mongo_find( conn, "db.records",query ,selection,0,0,0);

    if(cursor!=NULL)
    {
        while( mongo_cursor_next( cursor ) == MONGO_OK )
            bson_print( &cursor->current );
    }
于 2013-03-20T09:50:44.647 に答える
0

私はc APIに完全に精通しているわけではありませんが、2番目のjson objを追加する必要があると思います.

したがって、最終的には次のようになります。

bson_init( &query );
  bson_append_start_object( &query, "TimeStampSec" );
    bson_append_int( &query, "$lt", 10 );
  bson_append_finish_object( &query );

  bson_append_start_object( &query, "$query" );
    bson_append_int( &query, "ch11", 1 );
  bson_append_finish_object( &query );
bson_finish( &query );

?

于 2012-12-20T13:40:04.360 に答える