如果我使用mongoose查询MongoDB这样的简单查询:
rideAnimal
第一个console.log打印:5
但是第二个打印出来了:
User
.find()
.where('address.loc').near({ center: [lat,lng], maxDistance: 1 })
.exec(function(err, result) {
if (err) {
request.log(['server', 'database', 'error'], 'An error occured during the execution of the query');
}else{
for(var i=0;i<result.length;++i){
result[i]["distance"] = 5;
}
console.log(result[0].distance);
console.log(result[0])
}
});
为什么此文档和结果数组中的其他文档没有字段距离?
答案 0 :(得分:1)
因为result[0]
是一个猫鼬文档对象。当您调用console.log(result[0])
时,结果将转换为字符串(使用mongoose document toString
函数)。但是mongoose文档不包含distance
字段。
要执行您想要的操作,您应该将每个文档转换为对象:
var objects = results.forEach(results, function(res) {
res = res.toObject();
res["distance"] = 5;
return res;
});
console.log(objects[0].distance);
console.log(objects[0]);
http://mongoosejs.com/docs/api.html#document_Document-toObject