sql >> Database >  >> NoSQL >> MongoDB

Mongo-aggregatie, projecteer een subveld van het eerste element in de array

Als u ten minste MongoDB v3.2 gebruikt, kunt u de $arrayElemAt exploitant daarvoor. De onderstaande query doet wat je wilt. Het retourneert echter geen gegevens voor het voorbeeld dat u heeft opgegeven, omdat de "Instructions.1": { $exists: true } filter verwijdert het voorbeelddocument.

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



  1. Spring Boot met MongoTemplate

  2. Stel meerdere velden in met één updatequery

  3. MongooseError:je kunt niet meerdere keren `mongoose.connect()` gebruiken terwijl je verbonden bent

  4. Mongodb-aggregatie (telling) op meerdere velden tegelijk