我在find方法mongodb nodejs中有一个投影问题。我的结果包含所有字段。
见下面的代码:
我想只有姓名和年龄字段。我测试下面的代码和一些组合。
db.db("TodoApp").collection("Users").find(
{
Age:{$lte:20},
$and:[{Name:{$in:["Gh","dd","Mahdi"]}},{Location:"Mashhad"}]
},
{
_id:0,
Name:1,
Age:1,
}).toArray().then((docs)=>{
console.log("Users");
console.log(JSON.stringify(docs,undefined,2));
},(error)=>{
console.log("Unable to fetch Users");
}) ;
结果是一样的:你可以看到下面的jsons
Users
[
{
"_id": "5a4010d286d6152734f13f00",
"Name": "Mahdi",
"Location": "Mashhad",
"Age": 20
},
{
"_id": "5a4010d286d6152734f13f01",
"Name": "Gh",
"Location": "Mashhad",
"Age": 20
},
{
"_id": "5a401115c7320c1e0400b692",
"Name": "Mahdi",
"Location": "Mashhad",
"Age": 20
},
{
"_id": "5a40116cbf000c2128670648",
"Name": "Mahdi",
"Location": "Mashhad",
"Age": 20
},
{
"_id": "5a401174da2a7127b8b649d7",
"Name": "Mahdi",
"Location": "Mashhad",
"Age": 20
},
{
"_id": "5a401174da2a7127b8b649d8",
"Name": "Mahdi",
"Location": "Mashhad",
"Age": 18
}
]
我测试了很多查询,但仍存在问题
db.db("TodoApp").collection("Users").find(query8,{Name:0}).toArray((error,result)=>{
console.log(JSON.stringify(result,undefined,2));
});
db.db("TodoApp").collection("Users").find(query8,{Name:1}).toArray((error,result)=>{
console.log(JSON.stringify(result,undefined,2));
});
结果包含所有字段。
答案 0 :(得分:1)
var query8={
Location:null
}
var prj={
_id:0,
Name:1
};
db.db("TodoApp").collection("Users").find(query8).project(prj).toArray((error,result)=>{
console.log(JSON.stringify(result,undefined,2));
});
输出:
Connected to mongodb server
[
{
"Name": "Ghazanfar"
},
{
"Name": "Sara"
}
]
当我使用project()时,没关系。
答案 1 :(得分:0)
投影不能混合包含和排除。
因此,如果您只想要使用年龄和名称,那么
{
_id:0,
Name:1,
Age:1
}
但如果你不想看到位置;
{
Location:0
}