如何从猫鼬中的文档查询中仅获取子文档

how to get only subdocument from document query in mongoose

我试图在 node.js 中通过 mongoose 从整个文档中获取子文档。 我的数据库架构如下:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
// var Items = require('./items.js');

var Items = new Schema({
    no_of_times_ordered:Number,
    item_name:String,
    item_tag:String,
    item_category:String,
    item_stock:Number,
    item_price:Number,
    item_img:String,
    item_illustrations:[String],
    item_liked:Boolean,
    no_of_likes:Number
},{ versionKey: false });


var FoodTruckSchema = new Schema({
    foodtruck_name:String,
    foodtruck_location:String,
    foodtruck_rating:Number,
    foodtruck_tag:String,
    foodtruck_timing:String,
    foodtruck_cusine:String,
    foodtruck_img:String,
    foodtruck_logo:String,
    item_list: [Items]
},{ versionKey: false });



module.exports = mongoose.model('foodtruck',FoodTruckSchema);

查询如下:

var popularitems = function(req,res) {
    foodtr.find(function(err,items){
        if (err) res.send(err);
        res.json({
            status : '200',
            message:'popular items list',
            data: items
        });
    });

所以我已经查询了在哪里检索带有食品卡车的物品,但我怎么能只有物品作为响应?

您可以在查找查询中使用 selectprojection 以仅获取 items.

试试这个:

foodtr.find({},{'item_list':1},function(err,items){ 
    if (err) res.send(err); 
    res.json({ 
        status : '200',
        message:'popular items list', 
        data: items 
    }); 
});

{} 类似于查询条件,在这种情况下它将检索所有文档。 {'item_list':1} 是告诉 mongo 只检索 item_list 数组(_id 与其他任何东西一起默认)。

希望这就是你想要的。