sql >> Databasteknik >  >> NoSQL >> MongoDB

mgo:hur man uppdaterar en specifik array i ett dokument

Du skrev detta på fel sätt. Matchningen på lagrets "id"-värde hör hemma i "query"-delen av ditt uttalande och inte i "update"-avsnittet. Som sådan vill du inte ha UpdateId variant, men Update eftersom det tillåter ett bredare urval av frågor:

query := bson.M{
    "_id": bson.ObjectIdHex(productId),
    "location.warehouse": bson.ObjectIdHex(warehouseId)
}

update := bson.M{
    "$set": bson.M{
        "location.$.count": 4
    }
}

err := coll.Update(query,update)

Observera också att "punktnotationen" form är bra här eftersom din väljare för arrayelementet bara är ett singulärt fält. Du behöver vanligtvis bara $elemMatch när det finns mer än ett fält i arrayen för att fastställa matchningen.




  1. Ett bra verktyg för att bygga gränssnitt för admin/innehållshantering över MongoDB?

  2. Skapa flerfältsindex i Mongoose / MongoDB

  3. MongoDB + C#-drivrutin + frågeuppsättning av element där varje matriselement innehåller underdokument att fråga på

  4. Spring och MongoDB:SAXParseException när du läser Bean Definitions