Nun, es gibt keine Möglichkeit, $lookup
wäre schneller, als die Liste der Kommentar-IDs auf dem eigentlichen Videoobjekt zu haben. Ich meine, Sie müssen eine whole other request
stellen zu mongo, um sie jetzt zu bekommen. In Bezug auf die Leistung würde die Suche also offensichtlich Zeit hinzufügen. Das setzt voraus, dass Sie mongoose populate
nicht verwenden um diese Kommentar-IDs in die referenzierten Objekte zu "konvertieren".
Wenn Sie dann die Kommentare aus dem Video entfernen (sowie die tatsächliche Zählstütze) und die Suche durchführen, ist dies der richtige Weg. Da Sie sofort in Ihrem Argument übereinstimmen und dann eine einfache lookup
durchführen Ich sehe nicht, wie dies ein Engpass für Sie sein könnte. Außerdem können Sie Ihre Aggregation optimieren/ändern/abstimmen, siehe explain
usw.
Ihr Videoschema wäre auf diese Weise ziemlich sauber:
const VideoSchema = new mongoose.Schema({
caption: {
type: String,
trim: true,
maxlength: 512,
required: true,
},
owner: {
type: mongoose.Schema.ObjectId,
ref: 'User',
required: true,
},
// some more fields
}, { timestamps: true });