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

Sorting by Subfields in Mongo C-Driver

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

我们要做的是根据我们命名为 timestamp.secondstimestamp.nanoseconds[ 的两个字段对我们的集合进行排序=22=]。我们的集合由这些字段索引,我们可以使用下面的代码在 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);

使用 BCON_NEW:

构建查询时,您没有使用正确的语法
query = BCON_NEW("$query", "{", "}",
                 "$orderby", "{",
                                  "timestamp.seconds",     BCON_INT32(1),
                                  "timestamp.nanoseconds", BCON_INT32(1),
                        //        ^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
                        //                key                  value
                             "}");