Ich möchte eine Möglichkeit schaffen, eine Sammlung von Reisen zu durchsuchen. Bei der Suche wird geprüft, ob die Reise die Namen der übergebenen Städte (von und nach Ort) enthält. Jedes Reisemodell hat die ID des Benutzers, der den Eintrag erstellt hat. Die Abfrage kann 0 oder 100 Elemente in der Auflistung zurückgeben. Ich muss Daten über den Benutzer in den Suchergebnissen anzeigen. Was ist der beste Weg für mich, die Reiseinformationen zu suchen und auch die Benutzerinformationen zu erhalten.Führen Sie eine Textsuche in mongoDB durch und suchen Sie nach Referenzdokumenten für jeden Artikel in der Sammlung.
Jede Fahrt in den Ergebnissen kann einen anderen Benutzer haben.
Ich habe darüber nachgedacht, die Benutzerinformationen in das Auslösemodell einzubetten, aber dann muss ich eine Strategie haben, um die Informationen jedes Mal zu aktualisieren, wenn sich die Benutzerinformationen ändern. Die Beziehung zwischen Nutzer und Nutzer wird immer eins zu eins sein. Derzeit binde ich nur die Benutzerkennung ein. Dies funktioniert gut, wenn ich eine Reise zu einer Zeit abfrage, aber nicht für eine Suche.
Aktuelle Abfrage: Auf der Suche nach einer Übereinstimmung im Text
module.exports = function(app) {
app.get('/search', function(req, res) {
var search = req.query;
var query = {};
if(search.origin) {
query.origin = {
$regex: search.origin,
$options: 'i',
};
}
if(search.destination) {
query.destination = {
$regex: search.destination,
$options: 'i',
};
}
Trip.find(query, function(err, trips) {
if(err) return res.json(err);
return res.json(trips);
});
});
Reise Modell:
var TripSchema = mongoose.Schema({
user: {
type: Schema.Types.ObjectId,
required: true
},
origin: {
type: String,
required: true
},
destination: {
type: String,
required: true
},
departing: {
type: Date,
required: true
},
returning: {
type: Date
},
});
Benutzermodell:
var UserSchema = mongoose.Schema({
name: {
type: String
},
username: {
type: String
},
password: {
type: String,
}
});
Was haben Sie sich schon ausgedacht? –
@MedetTleukabiluly Ich habe meine Frage aktualisiert. Derzeit führe ich eine Überprüfung durch, um festzustellen, ob der angegebene Ursprung und das Ziel in vorhandenen Dokumenten enthalten sind. Ich habe noch nicht herausgefunden, wie man effizient durch das Array mit den Rückflugauslösungen geht und auch die Benutzerinformationen erhält. –
hmm könnten Sie Ihr Schema zeigen? Es ist jetzt ein bisschen mehrdeutig. – profesor79