2012-09-07 5 views
3

J'essaie de faire une requête à la collection mongo en utilisant le mot clé sort ($ orderby).

est ici objet BSON-requête sans orderby $:

bson cmd; 
bson_init(&cmd); 
bson_append_string(&cmd, "ip", ip.c_str()); 
bson_append_start_object(&cmd, "timestamp"); 
bson_append_long(&cmd, "$gt", 100); 
bson_append_finish_object(&cmd); 
bson_finish(&cmd); 

mongo_find(conn, collection, cmd, bson_empty(&empty), 0, 0, MONGO_SLAVE_OK); 

Il fonctionne très bien et returnes 5000 résultats.

Lorsque j'ajouter objet orderby $ (comme dans l'exemple c-pilote ici http://api.mongodb.org/c/current/tutorial.html#complex-queries):

bson cmd; 
bson_init(&cmd); 
bson_append_string(&cmd, "ip", ip.c_str()); 
bson_append_start_object(&cmd, "timestamp"); 
bson_append_long(&cmd, "$gt", 100); 
bson_append_finish_object(&cmd); 

bson_append_start_object(&cmd, "$orderby"); 
bson_append_int(&cmd, "timestamp", 1); 
bson_append_finish_object(&cmd); 

bson_finish(&cmd); 
... 

je résultats.

Qu'est-ce que je fais mal?

Répondre

1

Essayez:

bson cmd; 
bson_init(&cmd); 

bson_append_start_object(&cmd, "$query"); 
    bson_append_string(&cmd, "ip", ip.c_str()); 
    bson_append_start_object(&cmd, "timestamp"); 
     bson_append_long(&cmd, "$gt", 100); 
    bson_append_finish_object(&cmd); 
bson_append_finish_object(&cmd); 

bson_append_start_object(&cmd, "$orderby"); 
    bson_append_int(&cmd, "timestamp", 1); 
bson_append_finish_object(&cmd); 

bson_finish(&cmd); 
+0

Merci. Cela fonctionne très bien! – eugenemail