【发布时间】:2025-12-10 08:45:02
【问题描述】:
我见过几个与此相关的问题。但找不到可以帮助我的答案。
这是我使用猫鼬的服务器端 node.js 代码。此代码只是在控制台中打印“Success in fetching data[]”。
var kmphDBSchema = commonRouter.kmphDBSchema;
var locationSchema = new kmphDBSchema({result:{locations:{id:String,parent_id:String,countryCode:String,name:String}}});
var locationModel = commonRouter.kmphMongoClient.model('mgh_locations',locationSchema);
exports.getLocations = function(request, response) {
var locationName = '/.*' + request.params.locationName + '.*/';
console.log("locationName: " + locationName);
locationModel.aggregate(
[
{ $unwind:"$locations"}
,{ $project:{_id:0,locations:1} }
,{ $match:{"locations.name": locationName}}
]
, function (err, res) {
console.log('Error=' + err);
if (err){
console.log('Error in fetching locations' + err);
return (err);
}
console.log('Success in fetching data' + JSON.stringify(res));
response.send(JSON.stringify(res));
});
}
这是在 mongo shell 中查询返回的数据。 当使用 mongoose 从 node.js 获取数据时,不会返回此数据。
/* 0 */
{
"result" : [
{
"locations" : {
"id" : "1",
"parent_id" : "531",
"countryCode" : "IN",
"name" : "Noida"
}
},
{
"locations" : {
"id" : "407",
"parent_id" : "531",
"countryCode" : "IN",
"name" : "Greater Noida"
}
}
],
"ok" : 1
}.
这是原始的 JSON 文档
/* 0 */
{
"_id" : ObjectId("548b15d700dcf350ea6a9e1e"),
"locations" : [
{
"id" : "1",
"parent_id" : "531",
"countryCode" : "IN",
"name" : "Noida"
},
{
"id" : "2",
"parent_id" : "531",
"countryCode" : "IN",
"name" : "New Delhi"
},
{
"id" : "3",
"parent_id" : "531",
"countryCode" : "IN",
"name" : "Gurgaon"
},
{
"id" : "11",
"parent_id" : "0",
"countryCode" : "IN",
"name" : "Agra"
},
{
"id" : "12",
"parent_id" : "0",
"countryCode" : "IN",
"name" : "Jaipur"
},
{
"id" : "13",
"parent_id" : "0",
"countryCode" : "IN",
"name" : "Hyderabad"
},
{
"id" : "14",
"parent_id" : "0",
"countryCode" : "IN",
"name" : "Lucknow"
},
{
"id" : "15",
"parent_id" : "0",
"countryCode" : "IN",
"name" : "Kanpur"
},
{
"id" : "16",
"parent_id" : "0",
"countryCode" : "IN",
"name" : "Lansdowne"
},
{
"id" : "18",
"parent_id" : "0",
"countryCode" : "IN",
"name" : "Bangalore"
},
{
"id" : "19",
"parent_id" : "0",
"countryCode" : "IN",
"name" : "Nainital"
},
{
"id" : "20",
"parent_id" : "0",
"countryCode" : "IN",
"name" : "Bhimtal"
},
{
"id" : "21",
"parent_id" : "0",
"countryCode" : "IN",
"name" : "Kolkata"
}
]
}
【问题讨论】:
-
您需要澄清您的问题。 “标题”说“没有返回”,但你显示了一个结果。所以不知道你在说什么。
-
感谢您的快速回复。没有打印数据。在控制台中,日志语句只是打印“获取数据成功[]”。没有打印出确切的数据。更新问题以获得更多说明
-
新帐户。请使用详细信息编辑您的问题,而不是尝试在 cmets 中添加更多内容。只需评论并“标记”您想要提醒您的编辑的人。您似乎在问您的聚合在 mongoose 中给 shell 提供了不同的结果。我不认为您真正发布了所有相关代码,因为您发布的内容应该是一样的。
-
我又更新了问题。
-
我怀疑mongoose的“复数”代码才是真正的罪魁祸首。 Mongoose 模型采用“三个”参数。试试:
mongoose.model('mgh_locations',locationSchema,'mgh_locations')。指定时可能会得到正确的集合。
标签: node.js mongodb mongodb-query aggregation-framework