我正在尝试查询名为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);
// });