2016-02-26 46 views
0

我正在使用猫鼬向mongoDB发送查询。该集合被命名为Step。我想这个查询的结果是一个_id值的数组,每步一个。目前我正在全部获取所有的步骤对象,因为在这种情况下req.query没有被定义。什么是猫鼬查询的语法,我只想要一个属性的值?

服务:

this.getSteps = function() { 
    return $http({ 
     method: 'GET', 
     url: '/api/step' 
    }) 
    .then(function(response) { 
     return response.data; 
    }); 
}; 

控制器:

readStep: function (req, res) { 
    Step.find(req.query, function(err, result) { 
     if (err) { 
      res.status(500).send(err); 
     } 
     res.status(200).send(result); 
    }); 
} 

回答

1

将find查询的第二个参数设置为'_id'以仅检索对象的_id。

Step.find(req.query, '_id', function(err, result) { 

这将返回的数据是这样的:

[{_id: 123}, {_id: 234}] 

如果你想要得到的步骤ID数组自己,使用像这样

result = result.map(function(doc) { 
    return doc._id; 
}); 

的JavaScript地图功能这会给你一个这样的阵列:

[123, 234] 
1

你需要使用query.select,类似如下所示:

Step.find(query).select({ "_id": 1}).then(....); 

我不能打字很多,因为我正在通过手持设备进行响应。

希望得到这个帮助!