2016-08-28 32 views
6

Używam agregacji Mongoose (wersja MongoDB 3.2).Pierwszy element projektu w tablicy do nowego pola (agregacja MongoDB)

Mam pole users, które jest tablicą. Chcę $project pierwszy element w tej tablicy do nowego pola user.

Próbowałem

{ $project: { 
    user: '$users[0]', 
    otherField: 1 
    }}, 

    { $project: { 
    user: '$users.0', 
    otherField: 1 
    }}, 

    { $project: { 
    user: { $first: '$users'}, 
    otherField: 1 
    }}, 

ale ani dzieł.

Jak zrobić to poprawnie? Dzięki

+0

Możliwy duplikat [Get n-ty element tablicy w MongoDB] (http://stackoverflow.com/questions/7223273/get-n-th- element-of-an-array-in-mongodb) – styvane

Odpowiedz

25

Można użyć arrayElemAt:

{ $project: { 
    user: { $arrayElemAt: [ "$users", 0 ] }, 
    otherField: 1 
}}, 
+0

Wow, działa idealnie! dzięki! –

+0

Idealne, szukałem tego dla wieku + _ +! – Annihil