Node.js Mongoose在架构集合数组中查找

Node.js Mongoose在架构集合数组中查找,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在尝试查找在其数组中具有匹配项的文档 模式名称是food,下面就是它 var foodSchema = { "store_id": String, 'food': [{ 'dish': String }] }; var store = mongoose.model('store', storeSchema); module.exports = { store: store, food: food } 这是控制器 dbModel.food.find({

我正在尝试查找在其数组中具有匹配项的文档

模式名称是food,下面就是它

var foodSchema = {
    "store_id": String,
    'food': [{
        'dish': String
    }]
};
var store = mongoose.model('store', storeSchema);
module.exports = { store: store, food: food }
这是控制器

dbModel.food.find({ 'food.dish': req.body.data }, function(err, foundUsers) {
        res.status(200).json({
            "success": "1",
            "message": foundUsers
        });
    });

它总是返回空的,我怎么能找到它呢?

您还需要
var food=mongoose.model('food',foodSchema)
首先,您的代码不完整,当您导出
{store:store,food:food}
时,代码只是显示
store
模型。但仍然要考虑您的
foodSchema
,以便在字符串数组中找到匹配的元素。您可以在操作符中尝试
$,如下所示:

dbModel.food.find({ food: { $in: [req.body.data] } }, function(err, foundUsers) {
    res.status(200).json({
        "success": "1",
        "message": foundUsers
    });
});

req.body.data
值不在
food
数组中,这就是为什么会得到空数组。您需要准确地检查
req.body.data
中传递给查询的值。