Ich habe die folgende Abfrage in MongoDB
$this->createQueryBuilder()
->field('actor')->in($actorIdArray)
->getQuery()
->execute();
, wo das Feld Schauspieler mit Annotation ein Objektverweis ist
@MongoDB\ReferenceOne(targetDocument="User", simple=true)
das heißt, es wird die Objekt-ID speichern, anstelle der vollständigen Referenz.
Wenn $ actorIdArray eine Reihe von ID mit der Form ist
["5706cb39821b166d3931f34f", "56015f7d4f8bd90b769e6e75"]
die Abfrage nicht nichts zurückgeben, was die erwartet wird, da die eingereichten Schauspieler Objekt-ID enthält.
Allerdings, wenn ich das Array auf diese Weise
[new MongoId("5706cb39821b166d3931f34f"), new MongoId("56015f7d4f8bd90b769e6e75")]
bauen funktioniert es nicht funktionieren, was für mich sehr überraschend ist.
Das Protokoll zeigt die Abfrage
gemacht wird{ "actor": {"$in":[{"$id":"5706cb39821b166d3931f34f"},{"$id":"56015f7d4f8bd90b769e6e75"}]}}
und ich denke, es ist so etwas wie dieses
{ "actor": {"$in":[ObjectId("5706cb39821b166d3931f34f"),ObjectId("56015f7d4f8bd90b769e6e75"]}}
nicht sicher sein sollten, ob ich tue etwas falsch, irgendwelche Ideen?
es muss ein Array von Dokumenten aus dem ODM sein. – Alsatian
Wenn Sie die Objektladung vermeiden möchten, verwenden Sie eine Referenz http://www.doctrine-project.org/api/mongodb_odm/1.0/class-Doctrine.ODM.MongoDB.DocumentManager.html#_getReference – Alsatian
@Alsatian diese Abfrage funktioniert wenn ich es von der Konsole ausführen { "Schauspieler": { "$ in": [ObjectId ("5706cb39821b166d3931f34f"), ObjectId ("56015f7d4f8bd90b769e6e75"]}} so gibt es keine Notwendigkeit der Verwendung eine Reihe von Dokumenten. – Fran