2016-02-11 128 views
0

我正在嘗試extract specific document fields from a mongodb collection(v3.0.8在MongoLab中)。退回的文件必須在日期範圍內。我的目標是從這些文檔中提取特定的字段。我的nodejs代碼,mongodb + nodejs查找並返回文檔中的特定字段

var query = {}, operator1 = {}, operator2 = {}, operator3 = {} ; 

operator1.$gte = +startDate; 
operator2.$lte = +endDate; 
operator3.$ne = 'move'; 

query['xid'] = 1; // Problem here? 
query['date'] = Object.assign(operator1, operator2); 
query['type'] = operator3; 

console.log(query); 

MongoClient.connect(connection, function(err, db) { 

    if(err){ 
     res.send(err); 
    } else { 
     db.collection('jbone') 
      .find(query) 
      .toArray(function(err, result){ 
       console.log(err); 
      res.json(result); 
      }); 
    }; 
}); 

如果我選擇返回日期範圍中的所有字段,則查詢可以正常工作。如果我只選擇字段xid,我不會收到任何結果。根據the docs,我的query物體看起來很明智。 console.log(err)給出:

{ xid: 1, 
     date: { '$gte': 20160101, '$lte': 20160107 }, 
     type: { '$ne': 'move' } } 
    null 

nullerr

任何人都可以幫助我理解我做錯了什麼嗎?

或者指點我到另一個類似的SO問題的答案?

感謝

+0

請檢查'err'在回調函數,希望能給更多信息... – zangw

+0

我更新了'err'對象這隻能說明問題的'null' – Colin

+0

有'XID:1' 'jbone'文件中的相關記錄? – zangw

回答

0

選擇特定的領域可以做如下

.find( 
    {date: { '$gte': 20160101, '$lte': 20160107 }, type: { '$ne': 'move' }}, 
    { xid: 1}) 

示例代碼如下。

query['date'] = Object.assign(operator1, operator2); 
    query['type'] = operator3; 
    db.collection('jbone') 
     .find(query, {xid: 1}) 
     .toArray(function(err, result){ 
      console.log(err); 
     res.json(result); 
     }); 
+0

謝謝。我完全誤讀了文檔。尷尬的業餘錯誤! – Colin

相關問題