Ich verwende parse server + mongodb für Back-End und ich brauche Hilfe eine komplexe Abfrage für die Erstellung von:erstellen complexe Parse-Server oder mongodb Abfrage
Zuerst ist hier ein Schema für meine db:
Die friends
Modell repräsentieren die Freundschaft zwischen zwei Benutzern. Jeder user
hat ein city
Was ich versuche zu erreichen Funktion zu erstellen, die eine userId
als Eingabe und Rück Liste der Städte sortiert nach Anzahl der Freunde.
Hier ist mein Code bis jetzt
function getCities(userId) {
//This query allow to count number of friends in a given city
var innerQuery1 = new Parse.Query(Friends);
innerQuery1. equalTo("user1", userId);
var innerQuery2 = new Parse.Query(Friends);
innerQuery2.equalTo("user2", userId);
countFriendsQueryInCity = Parse.Query.or(innerQuery1, innerQuery2);
countFriendsQueryInCity.equalTo("city", cityId)
countFriendsQueryInCity.count({..})
//This to get all cities
var query = new Parse.Query(City);
query.find({})
}
So ist die probleme ich kann nicht einen Weg Weg in Parse oder mongodb herauszufinden, die zwei Abfragen zu verbinden?
Vielen Dank! Also bekommst du eine Liste aller Benutzerfreunde, dann fährst du die Freundesliste und machst die Zählung der Stadt, dass es ?? Auch was Wenn der Benutzer Tausende von Freunden haben, wird es zu kompliziert, weil Parsen nicht mehr als 1000 Artikel pro Seite verarbeiten kann? – Chlebta
Parse.Query.each() hat kein Limit. Es wird durch alle von ihnen laufen. Das Problem wäre, wenn es Hunderttausende oder Millionen wären, könnte es die Verbindung abbrechen. die Alternative wäre, einen "BeforeSave" Hook auf der "Friend" -Klasse zu machen und speichern Sie die Aggregation bei speichern, anstatt es bei Bedarf zu suchen. So könnte man etwas wie eine FriendCityCount-Klasse haben, die userid, city, count als Spalten hat ... –
Ich dachte darüber nach, aber das fügt eine weitere Tabelle hinzu, andere Funktionen ... Es ist verdrahtet, warum NoSql nicht unterstützt Join Abfrage – Chlebta