按Mongo C-Driver中的子字段排序

时间:2015-07-03 14:54:44

标签: mongodb sorting mongo-c-driver

我们正在尝试创建一个查询,以便以编程方式获取集合的有序游标。有一个single example given in mongodb website,它甚至不是一个有效的。

我们要做的是按两个字段对我们的集合进行排序,我们将其命名为 timestamp.seconds timestamp.nanoseconds 。我们的集合由这些字段编制索引,我们可以使用mongo shell中的以下代码对数据进行排序:

db.Data.find().sort({"timestamp.seconds": 1, "timestamp.nanoseconds": 1})

如何使用C驱动程序创建相同的查询?我们尝试了下面给出的代码,它不能像我们预期的那样工作。

mongoc_cursor_t *cursor;
bson_t *query;

query = BCON_NEW("$query", "{", "}", "$orderby", "{",
                 "timestamp.seconds: 1, timestamp.nanoseconds: 1", "}");
cursor = mongoc_collection_find (collection, MONGOC_QUERY_NONE, 0, 0, 0,
                                 query, NULL, NULL);

1 个答案:

答案 0 :(得分:2)

使用BCON_NEW生成查询时,您没有使用正确的语法:

query = BCON_NEW("$query", "{", "}",
                 "$orderby", "{",
                                  "timestamp.seconds",     BCON_INT32(1),
                                  "timestamp.nanoseconds", BCON_INT32(1),
                        //        ^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
                        //                key                  value
                             "}");
相关问题