sql >> Database >  >> NoSQL >> MongoDB

mgo:hoe een specifieke array in een document bij te werken

Je hebt dit verkeerd geschreven. De overeenkomst op de magazijn "id" waarde hoort thuis in het "query" gedeelte van uw afschrift en niet in de "update" sectie. Als zodanig wilt u niet dat de UpdateId variant, maar de Update omdat het een bredere selectie van zoekopdrachten mogelijk maakt:

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)

Merk ook op dat de "puntnotatie" formulier is hier prima, omdat uw selector voor het array-element slechts een enkelvoudig veld is. Je hebt meestal alleen $elemMatch nodig wanneer er meer dan één veld in de array is om de overeenkomst vast te stellen.




  1. Trek en voeg tegelijkertijd toe met mongo

  2. mongodb hoe alleen een waardelijst te retourneren van zoekquery

  3. Hoe $setDifference in array &Object te gebruiken met Mongo DB

  4. Veld van array-element toevoegen in MongoDB-aggregatie