Ich habe ein MongoDB-Schema, das in etwa wie folgt aussieht:MongoDB-Listen - erhalten jeden N-ten Artikel
[
{
"name" : "name1",
"instances" : [
{
"value" : 1,
"date" : ISODate("2015-03-04T00:00:00.000Z")
},
{
"value" : 2,
"date" : ISODate("2015-04-01T00:00:00.000Z")
},
{
"value" : 2.5,
"date" : ISODate("2015-03-05T00:00:00.000Z")
},
...
]
},
{
"name" : "name2",
"instances" : [
...
]
}
]
, wo die Anzahl der Instanzen für jedes Element kann sehr groß sein.
Ich möchte manchmal nur ein Muster der Daten, das heißt, jede dritte Instanz oder jede 10. Instanz bekommen ... Sie bekommen das Bild.
kann ich dieses Ziel erreichen, indem sie alle Instanzen bekommen und Filtern sie in meinem Server-Code, aber ich frage mich, ob es einen Weg gibt ist es Abfrage mithilfe etwas Aggregation zu tun.
Irgendwelche Ideen?
Aktualisiert
die Datenstruktur Unter der Annahme war flach wie @SylvainLeroux unten vorgeschlagen, das heißt:
[
{"name": "name1", "value": 1, "date": ISODate("2015-03-04T00:00:00.000Z")},
{"name": "name2", "value": 5, "date": ISODate("2015-04-04T00:00:00.000Z")},
{"name": "name1", "value": 2, "date": ISODate("2015-04-01T00:00:00.000Z")},
{"name": "name1", "value": 2.5, "date": ISODate("2015-03-05T00:00:00.000Z")},
...
]
wird die Aufgabe sein, jedes N-ten Elements des Erhaltens (spezifischer name
) einfacher?
FWIW: _ „die Anzahl der Instanzen für jedes Element kann sehr groß sein.“ _ Vielleicht hier ein eingebettetes Dokument verwendet, ist keine gute Idee, wenn die Anzahl von Dokumenten so groß ist, dass es schließlich die 32MB Grenze erreichen konnte. Wenn Sie regelmäßig auf eine Teilmenge dieses "großen" Arrays zugreifen müssen, ist es möglicherweise ein anderer Hinweis, dass das Schema nicht geeignet ist. Ohne Ihre genauen Bedürfnisse zu kennen, würde ich denken Sie an etwas mehr wie '{ "name": "name1", Wert: 1, Datum: ...}, { "name": "name1", Wert: 2, Datum: ...}, ... 'Mit diesem Schema könnten Sie sogar das _id-Feld verwenden (ab), um ein * voreingenommenes * Datenmuster auszuwählen. –
@SylvainLeroux, Instanzen teilen mehr als nur ein Name (ich das Schema für diese Frage Zweck vereinfacht). Ich möchte nicht, dass jede Instanz im Wesentlichen dieselben Daten enthält wie andere, daher habe ich ein übergeordnetes Objekt mit mehreren Instanzen. Für mich ergab das mehr Sinn. Aber ich bin offen für Vorschläge ... – yarons