spring data mongo - mongotemplate zählen mit Abfrage Hinweis
Den mongo docs angeben, können Sie eine Abfragehinweis für das zählen von Abfragen unter Verwendung der folgenden syntax:
db.orders.find(
{ ord_dt: { $gt: new Date('01/01/2012') }, status: "D" }
).hint( { status: 1 } ).count()
Können Sie dies tun, mit der mongo-Vorlage? Ich habe eine Query
- Objekt und rufe die withHint
Methode. Ich rufen Sie dann mongoTemplate.count(query);
Aber ich bin mir ziemlich sicher, dass es nicht mit dem Tipp, aber ich bin nicht positiv.
Auch kann ich die obige Abfrage zu zeigen, bis in den profiler, aber es nicht zeigen, der Hinweis. Wenn ich die Abfrage ausführen, mit der
.count()
entfernt, dann zeigt es die \$Hinweis:{status": 1}\ in den profiler.InformationsquelleAutor anztenney | 2014-10-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sicher, es gibt ein paar Formen dieses einschließlich der Abstieg in die basic-Treiber, aber nur dann, wenn anhand Ihrer definierten Klassen, die Sie tun können:
Also im Grunde der Aufbau einer
Query
- Objekt und das Objekt, das an Ihren Betrieb, die.count()
in diesem Fall.Den "Tipp" hier ist der name des index, wie ein "string" name des index zu verwenden, die auf die Sammlung. Wahrscheinlich so etwas wie "status_1" standardmäßig, aber was auch immer der tatsächliche name angegeben ist.
mongoTemplate.find(query, Class).size()
Es Schläge mit dem Fehlerplanner returned error: bad hint
, aber wenn ichmongoTemplate.count(query, Class)
es funktioniert gut. Vielleicht zählen, nicht der Planer, aber für mich scheint es, wie es nicht funktioniert.Gut, es war ziemlich klar gesagt, dass man den Hinweis auf den Namen eines index, gibt es auf die Sammlung. Also du machst es falsch.
Was ich versuche zu sagen ist, dass es nicht so aussieht, wie der Hinweis ist tatsächlich richtig funktioniert, wenn mit count. Ich bin damit einverstanden, dass ich sollte senden Sie bitte eine gültige Hinweis name, aber wie kann ich überprüfen, der Hinweis ist wirklich gesendet?
Umm, gut Sie können, zu Durcheinander herum mit der Inspektion explain-Ausgabe. Aber die gezeigte Methode ist, wie Sie angeben, "Hinweis", um einen
Query
Objekt für den Frühling-mongodb. Man ruft einfach die zugrunde liegenden Treiber-Methode, das gleiche zu tun. Ich wollte darauf hinweisen ursprünglich, dass Sie sollte die Reihenfolge der Argumente, die "Hilfe" der Abfrage-Optimierer verstehen, was du meinst, ohne sich "zwingen", den "Hinweis" auf den ersten Platz. In der Regel soll der Optimierer "sort it out" gegeben, wie die Wahl erzeugt die "zumindest entspricht", was bedeutet "optimal".InformationsquelleAutor Neil Lunn