In meiner aktuellen Mongo DB passende, Ich habe eine einfache Teil Sammlung, mit einem Elternteil Kindern Beziehung, wie folgt aus:Mongoose: label in Array finden und zurück Dokumente
{"partcode": "Parent1","children": ["Child1","Child2","Child3"]}
{"partcode": "Child1","label": ["label1"]}
{"partcode": "Child2","label": ["label1"]}
{"partcode": "Child3","label": ["label1"]}
Um die Kinder zurück von a partcode, verwende ich die folgende Mungo Funktion:
PartSchema.static('getChildren', function(query, callback) {
var self = this,
self.findOne(query, {children: 1, _id: 0})
.exec(function(err, doc) {
return (self.find({
"partcode": {
"$in": doc.children
}
}, {_id: 0}, callback));
});
});
Dies gibt die folgende Anordnung:
[{"partcode": "Child1","label": ["label1"]},
{"partcode": "Child2","label": ["label1"]},
{"partcode": "Child3","label": ["label1"]}]
Ich möchte ein Label-System implementieren, wobei ich ein Label als Metakind angeben kann und den Code alle untergeordneten Elemente zurückgeben kann, die diesem Label entsprechen.
{"partcode": "Parent1","children": ["*label1"]}
zurückkehren würde:
[{"partcode": "Child1","label": ["label1"]},
{"partcode": "Child2","label": ["label1"]},
{"partcode": "Child3","label": ["label1"]}]
ich ein Etikett in die mit einem Sonderzeichen als Ausgangs Kinder Feld des Mutter Dokument angeben werden (zur Zeit, ich bin mit ‚*‘, aber glücklich zu ändern das zu etwas anderem, wenn es sein muss).
Pseudocode:
- finden Eltern
- Erhalten Eltern ‚s Kinder Array
- In Array, wenn Kind beginnt mit Label Charakter
- erhalten Array aller partcodes von Teilen, die mit in Kinder Array
- Rückkehr Kinder Array
Kinder, die nicht voran Label und
Sie können reguläre Ausdrücke in der Anweisung $ in verwenden. Etwas in der Art von 'find ({label: {$ in: [/ label1 /]}}, Callback)' Stellen Sie sicher, dass Sie einen Index für das Feld 'label' hinzufügen – Andreas
Danke dafür. Mir geht es gut mit den Details um einen Fund. Ich habe eine Label-Funktion erstellt, die alle Objekte mit einem bestimmten Label zurückgibt. Was ich nicht weiß, ist, wie man es am besten strukturiert; das heißt, die breiten Striche. Ich lehne mich einer Aggregate-Pipeline zu. – Terry