Am mit dem folgenden Mongoose Schema in meiner Knoten-Anwendung mit Fundin einem Array von Objekten Schema mit Mongoose
var expenseSchema = new Schema({
particular : String,
date : {type : Date, default: Date.now},
paid_by : String,
amount : Number,
month : String
});
var roomSchema = new Schema({
name: String,
admin: String,
roomies : [String],
expenses : [expenseSchema]
},{
collection : 'rooms'
});
Ich brauche für einen bestimmten Monat mit find() Kosten für ein Zimmer zu bekommen. Hier ist das, was ich habe versucht, aber es gibt mir das ganze Zimmer Objekt
Room.findOne({_id : req.params._id, 'expenses.month' : 'oct'}).exec(function(err, result){
if(result == null) {
res.json({result : 'Oops! We couldn\'t find any rooms...'});
} else if(err) {
res.json({result : 'Error in getting Rooms'});
} else {
res.json({result : result});
}
});
jemand mir dabei helfen?
Dies gibt nur die richtigen Daten zurück. Aber es gibt nur ein Objekt zurück. Wie kann ich alle Objekte im Array mit demselben Monat erhalten? –
Dies gibt ein leeres Objekt zurück –
Ich denke, ich weiß warum, weil mit 'aggregate()' -Funktion für '$ match' mit' _id' übereinzustimmen, zuerst Werte zu 'ObjectId' umgewandelt werden müssen. Überprüfen Sie meine aktualisierte Version. – chridam