我只想要一个属性值的mongoose查询的语法是什么?

时间:2016-02-26 18:05:11

标签: mongodb mongoose

我正在使用mongoose向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);
    });
}

2 个答案:

答案 0 :(得分:1)

您需要使用query.select,如下所示:

@objc

我无法键入太多内容,因为我正在使用掌上电脑进行响应。

希望这有帮助!

答案 1 :(得分:1)

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

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

这将返回如下数据:

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

如果你想自己获得一个Step ID数组,请使用javascript map函数,如下所示

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

会给你一个像这样的数组:

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