我们正在尝试创建一个查询,以便以编程方式获取集合的有序游标。有一个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);
答案 0 :(得分:2)
使用BCON_NEW
生成查询时,您没有使用正确的语法:
query = BCON_NEW("$query", "{", "}",
"$orderby", "{",
"timestamp.seconds", BCON_INT32(1),
"timestamp.nanoseconds", BCON_INT32(1),
// ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^
// key value
"}");