2012-11-30 45 views
1

伊夫讀,有可能在MongoDB中只選擇一個場:mongodb的C驅動查詢來選擇特定字段

db.records.find({TimeStampSec {$lt:10} , {ch11:1}) 

例如,該查詢返回具有TimeStampSec < 10的所有對象的字段CH11但我不知道如何翻譯成C驅動程序。我試過這個:

bson_init(&query); 
bson_append_start_object(&query, "TimeStampSec"); 
bson_append_int(&query, "$lt", 10); 
bson_append_finish_object(&query); 

bson_append_int(&query, "node_id", 1); 

bson_finish(&query); 

但是,它不起作用。我是否需要創建另一個對象?

回答

0

我不完全熟悉c api,但我想你應該添加第二個json obj。

所以最終是這樣的:

bson_init(&query); 
    bson_append_start_object(&query, "TimeStampSec"); 
    bson_append_int(&query, "$lt", 10); 
    bson_append_finish_object(&query); 

    bson_append_start_object(&query, "$query"); 
    bson_append_int(&query, "ch11", 1); 
    bson_append_finish_object(&query); 
bson_finish(&query); 

0

這對我有用。

bson query,selection; 
bson_init(&query); 
    bson_append_start_object(&query, "TimeStampSec"); 
    bson_append_int(&query, "$lt", 10); 
    bson_append_finish_object(&query); 
bson_finish(&query); 

bson_init(&selection); 
    bson_append_int(&selection, "ch11", 1); 
bson_finish(&selection); 

    mongo_cursor *cursor=NULL; 

    cursor = mongo_find(conn, "db.records",query ,selection,0,0,0); 

    if(cursor!=NULL) 
    { 
     while(mongo_cursor_next(cursor) == MONGO_OK) 
      bson_print(&cursor->current); 
    }