我是节点和节目的初学者MongoDB的。我试图使用mongoose从查询返回的对象中记录一个值。如果我在循环中运行它,我可以得到值,但我试图在不使用循环的情况下获取值。
这是我的代码 -
That.find({$and: [{"userId" : {"$ne" : ""}},{"userId" : {"$exists" : true}}]}).sort({"_id" : -1}).limit(1).select("userId").exec(function(err, doc)
{
if(err)
{
console.log('User ID ERROR-');
callback({error:err,message:"Error getting max user ID"});
}else {
console.log('User ID-');
console.log(doc);
console.log(typeof(doc));
doc.forEach(function(eachdoc) {
console.log(eachdoc.userId);
});
process.exit();
}
});
而不是做
doc.forEach(function(eachdoc) {
console.log(eachdoc.userId);
});
如果undefined
console.log(doc.userId);
还有什么方法可以从结果集中删除_id
。
非常感谢任何帮助。提前谢谢。
答案 0 :(得分:2)
在查找函数中的查询对象之后添加 {_ id:0} ,以从结果中删除_id。 doc是一个你无法直接访问值的数组,你必须使用循环或doc [0] .userId。
That.find({
$and: [{
"userId": {
"$ne": ""
}
}, {
"userId": {
"$exists": true
}
}]
}, {
_id: 0
}).sort({
"_id": -1
}).limit(1).select("userId")
答案 1 :(得分:1)
回答第一个问题,你可以使用
console.log(doc[0].userId);
而不是
doc.forEach(function(eachdoc) {
console.log(eachdoc.userId);
});
关于第二个问题,请参阅How to prevent MongoDB from returning the object ID when finding a document?