3

sort ($orderby) キーワードを使用して mongo コレクションへのクエリを作成しようとしています。

$orderby のない bson-query オブジェクトは次のとおりです。

bson cmd;
bson_init( &cmd );
bson_append_string( &cmd, "ip", ip.c_str() );
bson_append_start_object( &cmd, "timestamp" );
bson_append_long( &cmd, "$gt", 100 );
bson_append_finish_object( &cmd );
bson_finish( &cmd );

mongo_find( conn, collection, cmd, bson_empty( &empty ), 0, 0, MONGO_SLAVE_OK );

それはうまく機能し、5000の結果を返します。

$orderby オブジェクトを追加すると (ここの c-driver の例のようにhttp://api.mongodb.org/c/current/tutorial.html#complex-queries ):

bson cmd;
bson_init( &cmd );
bson_append_string( &cmd, "ip", ip.c_str() );
bson_append_start_object( &cmd, "timestamp" );
bson_append_long( &cmd, "$gt", 100 );
bson_append_finish_object( &cmd );

bson_append_start_object( &cmd, "$orderby" );
bson_append_int( &cmd, "timestamp", 1 );
bson_append_finish_object( &cmd );

bson_finish( &cmd );
...

0件の結果があります。

私は何を間違っていますか?

4

1 に答える 1

1

試す:

bson cmd;
bson_init( &cmd );

bson_append_start_object( &cmd, "$query" );
    bson_append_string( &cmd, "ip", ip.c_str() );
    bson_append_start_object( &cmd, "timestamp" );
        bson_append_long( &cmd, "$gt", 100 );
    bson_append_finish_object( &cmd );
bson_append_finish_object( &cmd );

bson_append_start_object( &cmd, "$orderby" );
    bson_append_int( &cmd, "timestamp", 1 );
bson_append_finish_object( &cmd );

bson_finish( &cmd );
于 2012-09-07T20:52:56.053 に答える