ich ein verschachteltes Dokument, das wie folgt aussieht:
var User = new Schema({
id: String,
position: [{
title: String,
applied:[{
candidate_id: String,
name: String
}],
}],
Was ich suche ist alle des ‚angewandte‘ Subdokumente zu tun zurück, die ein gewissen passen ‚candidate_id‘
Was ich habe, so weit:
app.get('/applied', function(req, res){
var position = "58dc2bd4e7208a3ea143959e";
User.aggregate(
{$unwind : "$position"},
{$unwind : "$position.applied"},
{$match:{'position.applied.candidate_id': position}}).exec(function (err, result) {
console.log(result);
});
res.render('applied', { title: 'applied',layout:'candidate'});
});
ich habe eine andere Funktion, die alle Positionen zurückgibt, die übereinstimmen, und dass Code funktioniert:
app.post('/search', function (req, res) {
var position = new RegExp(req.body.position, 'i');
var location = new RegExp(req.body.location, 'i');
User.aggregate(
{$unwind : "$position"},
{$match:{'position.title': position,'position.location':location}}).exec(function (err, result) {
console.log(result);
res.send({ results: result });
});
});
Also im Grunde kämpfe ich mit einem Sub-Sub-Dokument zu bekommen. Irgendeine Idee, wo ich falsch liege?
Beispieldaten:
{
"_id" : ObjectId("58c2871414cd3d209abf5fc9"),
"position" : [
{
"_id" : ObjectId("58d6b7e11e793c9a506ffe8f"),
"title" : "Software Engineer",
"applied" : [
{
"candidate_id" : "58d153e97e3317291gd80087",
"name" : "Sample user"
},
{
"candidate_id" : "58d153e97e3317291fd99001",
"name" : "Sample User2"
}
]
},
{
"_id" : ObjectId("58c2871414cd3d209abf5fc0"),
"title" : "Software Engineer",
}
],
}
Was oben vor sich geht ist es zwei Positionen, von denen einer (erster Eintrag) hat zwei Kandidaten angewendet, was ich tun müssen, ist die verschachtelte Rück Objekt, wenn es mit der Mungo-Abfrage übereinstimmt.
Was passiert? Haben Sie auch einige Beispieldaten, für die das nicht richtig funktioniert? –
@ExplosionPills Das Array wird leer zurück .. Ich werde die Frage aktualisieren, um einige Beispieldaten anzuzeigen! – user