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

Kan mongo upsert array-data?

Jeg er lige selv stødt ind i dette problem. Jeg var ikke i stand til at finde en et-opkaldsløsning, men jeg fandt en to-opkaldsløsning, der virker når du har en unik værdi i dine array-elementer . Brug $pull kommando først, som fjerner elementer fra et array, og derefter $push .

db.soup.update({
    "tester":"tom"
}, {
    $pull: {
        'array': {
            "id": "3"
        }
    }
})
db.soup.update({
    "tester":"tom"
}, {
    $push: {
        'array': {
            "id": "3",
            "letter": "d"
        }
    }
})

Dette bør fungere, når dokumentet ikke findes, når dokumentet eksisterer, men posten i arrayet ikke eksisterer, og når posten eksisterer.

Igen, dette virker kun, hvis du har noget, såsom id felt i dette eksempel, der skal være unikt på tværs af elementer i arrayet.



  1. Sådan fanges redis.serializer.SerializationException

  2. Kan ikke oprette forbindelse til redis-server fra docker-container

  3. Sådan får du tilbagekald, når nøglen udløber i REDIS

  4. Hvordan skubber man en række objekter ind i en række i mongoose med et opkald?