dan*_*any 50 javascript mongoose mongodb mongodb-query
我有一个带Mongoose ODM的NodeJS应用程序(Mongoose 3.3.1).我想从我的集合中检索除1之外的所有字段.例如:我有一个集合Product有6个字段,我想要选择除"Field"字段之外的所有字段.我使用" 排除 "方法,但得到错误..这是我的代码.
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);
}
});
Run Code Online (Sandbox Code Playgroud)
但这会返回错误
Express
500 TypeError: Object #<Query> has no method 'exclude'.........
Run Code Online (Sandbox Code Playgroud)
我也试过,var Query = models.Product.find().exclude('title','Image');和var Query = models.Product.find({}).exclude('title','Image'); 而得到同样的错误.如何从Mongoose中的集合中排除一个/(两个)特定字段.
Joh*_*yHK 105
使用query.select在当前(3.X)字段选择猫鼬的基础之上.
使用a前缀要排除的字段名称-; 所以在你的情况下:
Query.select('-Image');
Run Code Online (Sandbox Code Playgroud)
快速旁白:在JavaScript中,应该为构造函数保留以大写字母开头的变量.所以考虑重新命名Query为query您的代码.
Phi*_*ipp 30
我不知道你在哪里读到.exclude函数,因为我在任何文档中都找不到它.
但是您可以使用find方法的第二个参数排除字段.
以下是官方文档中的示例:
db.inventory.find( { type: 'food' }, { type:0 } )
Run Code Online (Sandbox Code Playgroud)
此操作返回类型字段的值为food的所有文档,但不包括输出中的type字段.
小智 17
Model.findOne({ _id: Your Id}, { password: 0, name: 0 }, function(err, user){
// put your code
});
Run Code Online (Sandbox Code Playgroud)
这段代码在我的项目中有效.谢谢!!祝你今天愉快.
你可以这样做
const products = await Product.find().select(['-image'])
Run Code Online (Sandbox Code Playgroud)