Tlo*_*nXP 95 javascript mongoose mongodb node.js
我试图只选择一个特定的字段
exports.someValue = function(req, res, next) {
//query with mongoose
var query = dbSchemas.SomeValue.find({}).select('name');
query.exec(function (err, someValue) {
if (err) return next(err);
res.send(someValue);
});
};
Run Code Online (Sandbox Code Playgroud)
但是在我的json响应中我也收到了_id,我的文档架构只有两个fiels,_id和name
[{"_id":70672,"name":"SOME VALUE 1"},{"_id":71327,"name":"SOME VALUE 2"}]
Run Code Online (Sandbox Code Playgroud)
为什么???
Nei*_*unn 160
_id
除非您明确排除该字段,否则该字段始终存在.使用以下-
语法执行此操作:
exports.someValue = function(req, res, next) {
//query with mongoose
var query = dbSchemas.SomeValue.find({}).select('name -_id');
query.exec(function (err, someValue) {
if (err) return next(err);
res.send(someValue);
});
};
Run Code Online (Sandbox Code Playgroud)
或明确地通过一个对象:
exports.someValue = function(req, res, next) {
//query with mongoose
var query = dbSchemas.SomeValue.find({}).select({ "name": 1, "_id": 0});
query.exec(function (err, someValue) {
if (err) return next(err);
res.send(someValue);
});
};
Run Code Online (Sandbox Code Playgroud)
Aka*_*ash 63
现在有一种更短的方法:
exports.someValue = function(req, res, next) {
//query with mongoose
dbSchemas.SomeValue.find({}, 'name', function(err, someValue){
if(err) return next(err);
res.send(someValue);
});
//this eliminates the .select() and .exec() methods
};
Run Code Online (Sandbox Code Playgroud)
如果您想要大部分内容Schema fields
并且只想省略少数,您可以在字段前name
加上一个-
.对于"-name"
第二个参数中的ex ,将不包括name
doc中的字段,而此处给出的示例将仅name
包含返回文档中的字段.
Elv*_*inD 22
使用Mongoose中的Native MongoDB代码有一种更好的方法来处理它.
exports.getUsers = function(req, res, next) {
var usersProjection = {
__v: false,
_id: false
};
User.find({}, usersProjection, function (err, users) {
if (err) return next(err);
res.json(users);
});
}
Run Code Online (Sandbox Code Playgroud)
http://docs.mongodb.org/manual/reference/method/db.collection.find/
注意:
var usersProjection
此处列出的对象列表不会被退回/打印.
Nis*_*hah 12
提示:0 表示忽略,1 表示显示。
示例 1:
User.find({}, { createdAt: 0, updatedAt: 0, isActive: 0, _id : 1 }).then(...)
Run Code Online (Sandbox Code Playgroud)
示例 2:
User.findById(id).select("_id, isActive").then(...)
Run Code Online (Sandbox Code Playgroud)
示例 3:
User.findById(id).select({ _id: 1, isActive: 1, name: 1, createdAt: 0 }).then(...)
Run Code Online (Sandbox Code Playgroud)
Zee*_*mad 11
下面的代码将检索每个文档中除密码以外的所有字段:
const users = await UserModel.find({}, {
password: 0
});
console.log(users);
Run Code Online (Sandbox Code Playgroud)
输出
[
{
"_id": "5dd3fb12b40da214026e0658",
"email": "example@example.com"
}
]
Run Code Online (Sandbox Code Playgroud)
下面的代码只会检索每个文档中的电子邮件字段:
[
{
"_id": "5dd3fb12b40da214026e0658",
"email": "example@example.com"
}
]
Run Code Online (Sandbox Code Playgroud)
输出
[
{
"email": "example@example.com"
}
]
Run Code Online (Sandbox Code Playgroud)
数据库数据
[
{
"_id": "70001",
"name": "peter"
},
{
"_id": "70002",
"name": "john"
},
{
"_id": "70003",
"name": "joseph"
}
]
Run Code Online (Sandbox Code Playgroud)
询问
db.collection.find({},
{
"_id": 0,
"name": 1
}).exec((Result)=>{
console.log(Result);
})
Run Code Online (Sandbox Code Playgroud)
输出:
[
{
"name": "peter"
},
{
"name": "john"
},
{
"name": "joseph"
}
]
Run Code Online (Sandbox Code Playgroud)
工作样品操场
执行此操作的精确方法是将.project()
游标方法与 newmongodb
和nodejs
驱动程序一起使用。
var query = await dbSchemas.SomeValue.find({}).project({ name: 1, _id: 0 })
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
138876 次 |
最近记录: |