Javascript 如何从Mongoose中的集合中排除一个特定字段?

Javascript 如何从Mongoose中的集合中排除一个特定字段?,javascript,mongodb,mongoose,mongodb-query,Javascript,Mongodb,Mongoose,Mongodb Query,我有一个带有Mongoose OdMongoose 3.3.1的NodeJS应用程序。我想从我的集合中检索除1以外的所有字段。例如:我有一个集合产品,其中有6个字段,我想选择除字段图像以外的所有字段。我使用了排除方法,但出现了错误。。 这是我的密码 var Query = models.Product.find(); Query.exclude('title Image'); if (req.params.id) { Query.where('_id',

我有一个带有Mongoose OdMongoose 3.3.1的NodeJS应用程序。我想从我的集合中检索除1以外的所有字段。例如:我有一个集合产品,其中有6个字段,我想选择除字段图像以外的所有字段。我使用了排除方法,但出现了错误。。 这是我的密码

    var Query = models.Product.find();
    Query.exclude('title Image');

    if (req.params.id) {
        Query.where('_id', req.params.id);
    }


    Query.exec(function (err, product) {
        if (!err) {
            return res.send({ 'statusCode': 200, 'statusText': 'OK', 'data': product });
        } else {
            return res.send(500);
        }
    });
但这会返回错误


我也尝试过,var Query=models.Product.find.exclude'title'、'Image';var Query=models.Product.find{}.exclude'title','Image';但是得到同样的错误。如何从Mongoose中的集合中排除一个或两个特定字段。

我不知道您从何处了解到该函数。排除函数,因为我在任何文档中都找不到它

但是您可以使用find方法的第二个参数排除字段

以下是一个例子:

此操作将返回类型字段值为food的所有文档,但输出中不包括类型字段

用于当前3.x Mongoose版本中的字段选择

在要排除的字段名前加一个前缀-;因此,在你的情况下:

查询。选择“-Image”; 旁白:在JavaScript中,以大写字母开头的变量应该保留给构造函数。因此,将重命名查询视为代码中的查询。

Model.findOne({ _id: Your Id}, { password: 0, name: 0 }, function(err, user){
  // put your code
});
这段代码在我的项目中起作用。谢谢祝你今天愉快。

你可以这样做

const products = await Product.find().select(['-image'])

在更新版本的Mongoose中,您可以按如下方式使用它来获取所选字段

user.findById({_id: req.body.id}, 'username phno address').then(response => {
  res.status(200).json({
    result: true,
    details: response
  });
}).catch(err => {
  res.status(500).json({ result: false });
});

我正在使用异步等待

async (req, res) => {
      try { 
        await User.findById(req.user,'name email',(err, user) => {
          if(err || !user){
            return res.status(404)
          } else {
            return res.status(200).json({
              user,
            });
          }
        });
      } catch (error) {
        console.log(error);
      }

我在[]中读到了关于排除的内容。正如上面的答案一样,我的图像字段对于不同的产品可能有不同的值。每行他询问mongoose时,您使用的是本机驱动程序。救了我的命..删除user.password不稳定工作..害怕以这种方式上线您也可以通过执行以下操作来排除子文档字段:-Image.width
user.findById({_id: req.body.id}, 'username phno address').then(response => {
  res.status(200).json({
    result: true,
    details: response
  });
}).catch(err => {
  res.status(500).json({ result: false });
});
async (req, res) => {
      try { 
        await User.findById(req.user,'name email',(err, user) => {
          if(err || !user){
            return res.status(404)
          } else {
            return res.status(200).json({
              user,
            });
          }
        });
      } catch (error) {
        console.log(error);
      }