2012-07-21 1 views
9

Lassen Sie uns sagen, dass ich die folgende Datenmodell in Mongo haben:Wie schränken Sie ein Array-Subelement in Mongo ein?

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

Lassen Sie uns jetzt sagen, mein list Array sehr lang ist, und ich möchte nicht jedes Mal das gesamte Dokument greifen. So möchte ich obj und name bekommen, aber nur die letzten 5 Elemente in list greifen. Wie machst du das mit Mongo? Ich benutze Pymongo.

Antwort

18

Ich denke, Sie suchen nach dem Operator $slice. Dokumente sind here.

Die Syntax Sie suchen, ist so etwas wie dieses:

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

Beachten Sie, dass dies auch die _id Feld wird standardmäßig zurück. Wenn Sie nicht wollen _id_id:0 vor obj:1 hinzufügen. Dies ist die JS-Syntax, aber die Python-Syntax wird sehr eng sein.

+3

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