sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan kan jeg returnere det element, jeg leder efter inde i et indlejret array?

Brug shell-metoden findAndModify for at passe til dine behov.

Men du kan ikke bruge positionstegnet $ mere end én gang, mens du projicerer i MongoDb, så du skal muligvis selv holde styr på det på klientsiden.

Brug arrayFilters at opdatere dybt indlejret underdokument i stedet for positional all operator $[] .

Nedenfor er en arbejdsforespørgsel -

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. django admin filtre og mongodb:Fanget DatabaseError under rendering:Denne forespørgsel understøttes ikke af databasen

  2. Hvordan opdaterer man et objekt i mongodb via mongoose?

  3. Hvordan kan jeg kontrollere, at en given dato ligger mellem to datoer i mongodb?

  4. MongoDB:hvorfor returnerer find og findOne kun det sidste array-element?