查询中的 mongodb c-driver $orderby

标签 mongodb mongodb-c

我正在尝试使用 sort ($orderby) 关键字对 mongo 集合进行查询。

这里是没有 $orderby 的 bson 查询对象:

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 个结果。

我做错了什么?

最佳答案

尝试:

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 );

关于查询中的 mongodb c-driver $orderby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12317440/

相关文章:

javascript - 列出 friend 之间最常见的游戏

mongodb - Mongo 副本内部 SSL 问题

php - MongoDB 更新替换文档

connect.c :1:18: fatal error: bson. h: 没有那个文件或目录

c++ - 在 Cygwin 中构建 MongoDB C++ 驱动程序 : generate_error_codes. 找不到 py

javascript - 在 Node.js 应用程序中处理外部触发器

c# - 带有聚合管道的 MongoDB C# 驱动程序更新文档

c - mongodb c-api 中的 $exists 查询

c - LibBSON 导出到缓冲区