sql >> Databáze >  >> NoSQL >> MongoDB

Mongo agregace, projekt podpole prvního prvku v poli

V případě, že používáte alespoň MongoDB v3.2, můžete použít $arrayElemAt operátor za to. Níže uvedený dotaz dělá to, co chcete. Nevrací však žádná data pro vzorek, který jste poskytli, protože "Instructions.1": { $exists: true } filtr odebere vzorový dokument.

db.getCollection('Orders').aggregate([{
    $match: {
        "Instructions.1": {
            $exists: true
        }
    }
}, {
    $project: { 
        "_id": 0, 
        "UserId": "$User.EntityId", 
        "ItemName": { $arrayElemAt: [ "$Items.Details.ItemName", 0 /* first item! */] }
    }
}])



  1. MongoDB normalizace, cizí klíč a spojování

  2. MongoDB $rand

  3. Mapování many-to-many s Mongoose

  4. Mongoose agregátní vyhledávání - Jak filtrovat podle konkrétního ID