【问题标题】:mongodb + nodejs to find and return specific fields in documentsmongodb + nodejs 查找并返回文档中的特定字段
【发布时间】:2016-02-11 18:59:32
【问题描述】:

我正在尝试extract specific document fields from a mongodb collection(MongoLab 的 v 3.0.8)。返回的文件必须在一个日期范围内。我的目标是从这些文档中提取特定字段。我的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 问题并给出答案?

谢谢

【问题讨论】:

  • 请在回调函数中查看err,希望它能提供更多信息...
  • 我用err 对象更新了问题,它只显示null
  • jbone文档中是否有xid: 1相关记录?
  • 我在问题中添加了指向数据的链接。
  • "xid": "yAtl4PM9ORJEVPZvEu43cHxh3wHHye78",xid的类型是String,不是整数...

标签: json node.js mongodb


【解决方案1】:

选择特定字段可以如下完成

.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);
        });

【讨论】:

  • 谢谢。我完全误读了文档。令人尴尬的业余错误!
猜你喜欢
  • 1970-01-01
  • 2019-05-17
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多