Ich habe zwei Sammlungen, eine Modell- und eine Papierkollektion. Ich muss Felder von beiden abgleichen können. Sie haben ein Feld namens Referenz, das eine Kennung enthält.pymongo - Wie man auf Nachschlagen abgleicht?
Ich möchte Dokumente übereinstimmen, die die haben folgende
‚Autoren‘: ‚Migliore M‘ aus der Papiere Sammlung ‚Zelltypen‘: ‚Hippocampus CA3 Pyramidenzelle‘ aus der Modelle Sammlung
Hier wie mein Code aussieht:
pipeline = [{'$lookup':
{'from' : 'models',
'localField' : 'references',
'foreignField' : 'references',
'as' : 'cellmodels'}},
{'$match':
{'authors' : 'Migliore M', 'cellmodels.celltypes' : 'Hippocampus CA3 pyramidal cell'}},
]
for doc in (papers.aggregate(pipeline)):
pprint (doc)
ich bekomme keine Ergebnisse.
Ich bemerke, dass, wenn ich nicht die cellmodels.celltypes im Match-Parameter aufrufen, es die Papiere finden wird, die Migliore M entsprechen. Wie kann ich es auch mit dem Zelltyp übereinstimmen: 'Hippocampus CA3 Pyramidenzelle' von der Modelle Sammlung in dieser Abfrage?
Sie müssen nur '{ '$ Abroller': '$ cellmodels'}' 'vor $ match'. – Veeram
Nicht genau sicher, dass die Abwickelung irgendetwas getan hat, aber ich konnte es zur Arbeit – Kevin
Die Suche zurückgibt Array so Abwickeln wird Arrays in Objekte konvertieren und Sie können den Vergleich auf eingebettete Felder anwenden. – Veeram