3

我们正在尝试创建一个查询,以便以编程方式获取集合的有序游标。mongodb 网站中给出了一个示例,它甚至不是一个有效的示例。

我们要做的是通过我们命名为timestamp.secondstimestamp.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);
4

1 回答 1

3

使用以下命令构建查询时,您没有使用正确的语法BCON_NEW

query = BCON_NEW("$query", "{", "}",
                 "$orderby", "{",
                                  "timestamp.seconds",     BCON_INT32(1),
                                  "timestamp.nanoseconds", BCON_INT32(1),
                        //        ^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
                        //                key                  value
                             "}");
于 2015-07-04T19:02:17.467 回答