sql >> Database >  >> NoSQL >> MongoDB

Hoe kan ik het element dat ik zoek in een geneste array retourneren?

Gebruik de shell-methode findAndModify om aan uw behoeften te voldoen.

Maar u kunt het positionele teken $ meer dan eens tijdens het projecteren in MongoDb, dus het kan zijn dat u het zelf bij de klant moet bijhouden.

Gebruik arrayFilters om diep genest subdocument bij te werken, in plaats van de positionele all-operator $[] .

Hieronder is een werkende vraag -

var query = {
    universe: 'comics'
};

var update = {
    $set: {
        'saga.$[outer].characters.$[inner].character': 'lobezno',
        'saga.$[outer].characters.$[inner].picture': '618035022354.png',
    }
};

var fields = {
    'saga.characters': 1
};

var updateFilter = {
    arrayFilters: [
        {
            'outer.name': 'x-men'
        },
        {
            'inner.character': 'wolverine'
        }
    ]
};

db.collection.findAndModify({
    query,
    update,
    fields,
    arrayFilters: updateFilter.arrayFilters
    new: true
});


  1. Haal een bepaald element uit de mongoDB-array

  2. is dit de optimale minimale setup voor mongodb om sharding/scaling toe te staan?

  3. Selecteer overeenkomend matrixelement en retourneer geselecteerde velden

  4. Hoe geneste array te updaten