zu vergleichen In Bezug auf this different but not unrelated question werde ich die Beispielmodelle ausleihen.Der effizienteste Weg, um eine bestimmte Anzahl von Elementen in einer db.Model ListProperty
class Foo(db.Model): bars = db.ListProperty(db.Key)
class Bar(db.Model): pass
Wenn ich eine bestimmte Foo Einheit haben und ich möchte alle anderen foo Einheiten auch eine bestimmte Bar Key in seinen Bars Listproperty enthält, erhalten, würde ich die folgende Abfrage verwenden:
related_foos = Foo.all().filter('bars', bar_entity).fetch(fetch_count)
Wie wäre es, wenn ich alle anderen Entitäten der Modellart Foo finden möchte, die mindestens N übereinstimmende Balkeneinheiten haben? Der offensichtliche Weg, dies mit einer For-Schleife zu tun, würde drastische Ineffizienzen beinhalten, und es wäre vielleicht am besten, das Modell selbst zu ändern, um dies zu vereinfachen, aber es scheint nicht offensichtlich zu sein, wie dies zu erreichen ist.
Die Antworten sind hilfreich, wenn das Ziel mit einer bekannten Liste von Entitäten übereinstimmt, aber hier ist ein besseres Beispiel für meine Frage: Nehmen wir an, ich habe eine Instanz von Foo mit 10 bar-Tasten aufgelistet die Bars Eigenschaft. Ich möchte alle anderen Foo-Entitäten mit mindestens 2 übereinstimmenden Bar-Schlüsseln erhalten. Wie ich in der Frage sagte, könnte dies mit mehreren Datenspeicher Lesevorgänge getan werden, aber es wäre wirklich toll, wenn es mit nur einem Lesevorgang oder der geringsten Anzahl von Lesevorgängen getan werden könnte. – jamtoday