2016-02-11 2 views
0

Я пытаюсь установить extract specific document fields from a mongodb collection (v 3.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, результаты не получат. Мой query объект выглядит разумно в соответствии с the docs. console.log(err) дает:

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

null является err.

Может ли кто-нибудь помочь мне понять, что я делаю неправильно?

Или указать мне на другие похожие вопросы с ответом?

Благодаря

+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

Смежные вопросы