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

Jak mohu vrátit prvek, který hledám, uvnitř vnořeného pole?

Použijte metodu shellu findAndModify podle vašich potřeb.

Nemůžete však použít poziční znak $ více než jednou při promítání v MongoDb, takže to možná budete muset sledovat sami na straně klienta.

Použijte arrayFilters k aktualizaci hluboce vnořeného dílčího dokumentu namísto pozičního all operátoru $[] .

Níže je pracovní dotaz -

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. Chyba připojení Mongodb prostřednictvím dockeru ve Springbootu

  2. Redis se neaktualizuje při mnoha žádostech najednou

  3. jak mohu automaticky zvýšit pole v mongodb pomocí kódu Java?

  4. Operátor agregačního potrubí MongoDB $eq