查询父文档

时间:2017-08-03 00:16:45

标签: node.js mongodb mongoose mongoose-schema querying

我正在尝试查询名为cars的子文档数组。在这里,我有所有经销商的汽车出售。我可以返回包含所有车辆的父文档,但我无法查询子文档。当我尝试这样做时,我只得到一个子文档,当数据库中有更多,或者所有这些 - 我希望你能帮助我

我的架构

var mongoose = require('mongoose');

var bilerSchema = new mongoose.Schema({
    maerke: String,
    model: String,
    titel: String,
    thtitel: String,
    hk :String,
    nm :String,
    nultilhundrede :String,
    tophastighed :String,
    kmprliter :String,
    bredde:String,
    laengde :String,
    hoejde :String,
    Lasteevne :String,
    traekhjul :String,
    maxpaahaeng :String,
    airbags :String,
    tank :String,
    gear :String,
    geartype :String,
    vaegt :String,
    dore :String,
    motor :String,
    braendstof :String,
    leveringspris:String,
    farve :String,
    beskrivelse: String,
    udstyr: [String],
    aargang :String,
    km :String,
    pris :String,
    indregistrering: String,
    synet :String,
    images: [String],
},{ timestamps: { createdAt: 'created_at' } });

var carSchema = new mongoose.Schema({
    ownerID: String,
    cars: [bilerSchema]
});

const Car =  module.exports =  mongoose.model('Car', carSchema);

我首先通过ownerID获取parentdocument,之后我想查询子文档,只包含符合条件的文档。恩。如果我想要归还所有制造宝马的汽车,og燃料是柴油,等等。

我完成了什么,

注释掉的方法,仅在柴油车上返回,而未注释掉的其他方法将返回子文档中的所有车辆,

console.log(query);

    Biler.findOne({ownerID:id, cars:{ $elemMatch :{braendstof: "Benzin"}}})
        .exec((err,doc)=>{
        console.log(doc);
        res.json(doc);
    });
    // Biler.find({ownerID: id}, {cars: {$elemMatch:{'braendstof':'Diesel'}}})
    //     .exec((err,doc) =>{
    //         var response = {
    //             status : 200,
    //             message : doc[0].cars
    //         };
    //         if (err) {
    //             console.log("Error finding car");
    //             response.status = 500;
    //             response.message = err;
    //         } else if(!doc) {
    //             console.log("Forhandler ID not found in database", id);
    //             response.status = 404;
    //             response.message = {
    //                 "message" : "Forhandler ID not found " + id
    //             };
    //         }
    //         res
    //             .status(response.status)
    //             .json(response.message);
    //     });

0 个答案:

没有答案