2015-07-03 72 views
3

我們正在嘗試創建一個查詢,以編程方式獲取集合的有序光標。有一個single example given in mongodb website,它甚至不是一個工作。在Mongo C驅動程序中按子字段排序

我們試圖做的是,我們命名爲timestamp.secondstimestamp.nanoseconds兩個領域我們收集整理。我們收集這些領域的索引,我們能夠在蒙戈外殼採用下面的代碼中的數據進行排序:

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

_「如我們預期它不工作」 _你能不能詳細闡述這一點嗎?什麼是「不工作」?編譯錯誤?運行時錯誤?錯誤的結果? –

+0

這是奇怪的部分,它不會拋出異常或給出任何錯誤。它只是不對數據進行排序,它給出了空查詢給出的結果。 –

回答

2

當你建立使用BCON_NEW查詢你不使用正確的語法:

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