können wir zwei Szenarien haben sich hier:
Wir sind immer ein Hauptdokument beantragt und müssen skip/Limit auf diesem Feld haben.
Wir fordern eine unbekannte Anzahl von Dokumenten an und dann könnten wir eine Art von zusammengeführten Array von allen Quellen überspringen/begrenzen.
Beide Lösungen werden mit Aggregations Rahmen mit $unwind
Bühne, die diffrence ist, dass $match
in erster Fall immer nur ein Dokument zurückgibt (lassen Sie uns von objectId
abgestimmt sagen). mit $group
Server-Seite oder iterieren und Prozess in C# -Code
var aggregate = collection.Aggregate().Match(x => x.Id == ourNeededId)
.Unwind("Items").Skip(3).Limit(3).Project<Product>(project);
Als Ausgabe werden wir drei Dokumente erhalten, die wir können, a) verschmelzen.
EDIT
var aggregate =
collection.Aggregate()
.Match(x => x._id == "some id here")
.Unwind("Items")
.Skip(3)
.Limit(3)
.Group(BsonDocument.Parse("{_id:{id:'$_id', ItemsCount:'$ItemsCount' },Items:{$push:'$Items'} }"))
.Project<Product>(BsonDocument.Parse("{_id:'$_id.id', ItemsCount:'$_id.ItemsCount', Items:1 }"))
.ToList();
Alle Kommentare willkommen!
Vielen Dank! Könnten Sie bitte ein Beispiel für einen Gruppencode geben? –
@AlexGurskiy finden Sie 'schnell' bearbeiten – profesor79
Danke für Ihre Zeit! –