MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как мога да върна елемента, който търся във вложен масив?

Използвайте метода на обвивката findAndModify за да отговарят на вашите нужди.

Но не можете да използвате позиционния знак $ повече от веднъж, докато проектирате в MongoDb, така че може да се наложи да го следите сами от страна на клиента.

Използвайте arrayFilters за актуализиране на дълбоко вложен поддокумент, вместо позиционен оператор за всички $[] .

По-долу има работеща заявка -

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - актуализирайте поддокумент с $set

  2. Как да получа оцветен изход на заявка и обвивка в MongoDB?

  3. MongoDB Upsert Обяснено

  4. Mongodb и запитване, което търси полигони, които пресичат многоъгълник

  5. Flask mongoengine се свързва чрез uri