2012-07-21 6 views
9

Powiedzmy mam następujący model danych w Mongo:Jak ograniczyć podelement macierzy w Mongo?

{ 
    _id: ..., 
    name: "...", 
    obj: {...}, 
    list: [ ... ], 
} 

Teraz powiedzmy, moja list tablica jest bardzo długa, a ja nie chcę, aby pobrać cały dokument za każdym razem. Tak więc chcę uzyskać obj i name, ale pobrać tylko 5 ostatnich elementów z list. Jak to robisz z Mongo? Używam pymongo.

Odpowiedz

18

Myślę, że szukasz operatora $slice. Dokumenty to here.

Składnia szukasz jest coś takiego:

db.coll.find({}, {obj:1, name: 1, list:{$slice: -5}}); // last 5 

Zauważ, że będzie to również powrót pole _id domyślnie. Jeśli nie chcesz, aby _id dodać _id:0 przed obj:1. Jest to składnia JS, ale składnia pythona będzie bardzo bliska.

+3

[docs.mongodb/$ slice] (http://docs.mongodb.org/manual/reference/operator/projection/slice/) – laggingreflex