2014-01-20 5 views
2

내 쿼리 결과를 얻을 수는 있지만 내 필드 "X"(int32)의 값에 따라 오름차순 (내림차순)으로 검색 할 수는 없습니다. 당신이 나를 도울 수?

최신 버전의 MongoDB-C를 사용하고 이전 버전에서는 쿼리에 "$ orderby"를 사용할 수 있었지만 새 버전에서는이 기능 "bson_append_start_object()"가 존재하지 않습니다. 내 코드의

by: [ 
     { 
     id: ObjectId("XX"), 
     type: NumberInt(1) 
     } 
    ], 
    timestamp: NumberInt() 

및 부품 :

bson_init(&array); 
    bson_append_oid(&array, "id", 2, &oid); 
    bson_append_int32(&array, "type", 4, 1); 
    bson_init(&query); 
    bson_append_document(&query, "by", 2, &array); 

가 사전에 감사

여기 내 컬렉션의 구조 부분입니다.

감사합니다.

+0

난 당신이 몇 가지 코드를 보여 좋습니다. – iandotkelly

+0

내 게시물을 편집했습니다 –

+1

새 C 드라이버에서'$ orderby'를 사용할 수 있어야합니다. github repo의 [예제] (https://github.com/mongodb/mongo-c-driver/blob/master/examples/example-gridfs.c#L67) 중 하나에서 'bson_append_start_object()'와 동일한 기능을 수행합니다. 'bson_append_document_begin (& query, "$ orderby", -1, & child);' – Stennie

답변

2

새 C MongooDB 드라이버에서 여전히 $orderby을 사용할 수 있습니다.

bson_append_start_object() 대신에 새 API는 bson_append_document_begin()을 사용합니다. GridFS example in the github repo에서

샘플 사용 :

bson_init (&query); 
    bson_append_document_begin (&query, "$orderby", -1, &child); 
    bson_append_int32 (&child, "filename", -1, 1); 
    bson_append_document_end (&query, &child); 
    bson_append_document_begin (&query, "$query", -1, &child); 
    bson_append_document_end (&query, &child); 
+0

감사합니다.하지만 이제이 게시물과 관련된 새로운 질문을 찾을 수 있습니다. http://stackoverflow.com/questions/21332895/complex-query-with-two-orderby –