3

コレクションの順序付きカーソルをプログラムで取得するために、クエリを作成しようとしています。mongodb の Web サイトに 1 つの例が示されていますが、実際には機能していません。

私たちがやろうとしているのは、timestamp.secondstimestamp.nanosecondsという名前の 2 つのフィールドでコレクションを並べ替えることです。私たちのコレクションはこれらのフィールドによってインデックス化されており、mongo シェルで以下のコードを使用してデータを並べ替えることができます。

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 に答える