2017-02-15 2 views
1

Ich habe ein Array von übergeordneten Dokumenten, die aus verschachtelten Dokumenten zwischen 20 und 500 bestehen. Wie kann ich die Anzahl verschachtelter Dokumente für jedes übergeordnete Dokument begrenzen?Wie Sie die Anzahl der in MongoDB angezeigten verschachtelten Dokumente begrenzen

unten ist die Struktur meines Dokuments und verschachtelten Dokuments.

[{ 
     id 
     title 
     users: [{ 
       user_id: 1, 
       timestamp: 2354218, 
       field3: 4 
      }, { 
       user_id: 1, 
       timestamp: 2354218, 
       field3: 4 
      }, { 
       user_id: 1, 
       timestamp: 2354218, 
       field3: 4 
      }, 
      ... 
     ] 

    }, { 

    }, 
    ... 
] 

Ich möchte die Anzahl der Benutzer für jede übergeordnete Dokument gezeigt begrenzen. wie man?

Meine Suche

db.movies.aggregate(
[{$match: { 
    "movie_title": "Toy Story (1995)"} 
    },{ 
    $lookup: { 
     from: "users", 
     localField: "users.user_id", 
     foreignField: "users.id", 
     as: "users" 
    } 
}, 
{$project: { 

     movie_title: "$movie_title", 
     users: { $slice: [ "$users", 1 ] } 
    }} 
]); 

Antwort

2

Sie unter Abfrage versuchen. Verwenden Sie $slice, um maximal die ersten n Elemente im verschachtelten Dokumenten-Array für jedes Dokument zu erhalten.

db.collection.aggregate([{ $project: { title: 1, nUsers: { $slice: [ "$users", n ] } } ]) 

oder regelmäßige Abfrage verwenden.

db.collection.find({}, { title: 1, nUsers: {$slice: n } }) 
+0

Ich habe die Abfrage, die ich mit $ slice verwende, wie du erwähnt hast. aber ich glaube nicht, dass es funktioniert –

+0

Ich hoffe, du hast das schon herausgefunden. – Veeram

+0

Wie kann ich die Anzahl der Felder begrenzen, die ich in "Benutzer" anzeigen kann? Ich habe zip_code, Beruf, Geschlecht, Alter, ... Ich möchte nur zip_code und Beruf zeigen. –

Verwandte Themen