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

Prvek pole aktualizace dokumentu MongoDB pomocí metody findOneAndUpdate v Javě

Musíte použít arrayFilters k aktualizaci určitého prvku pole (s podmínkou). Filtry polí v Javě jsou definovány pomocí FindOneAndUpdateOptions objekt.

List<Bson> arrFilters = new ArrayList<>();
arrFilters.add(new Document("elem.apn", "abcdef")); // this specifies the element search criteria
FindOneAndUpdateOptions updateOptions = new FindOneAndUpdateOptions().arrayFilters(arrFilters);

String [] dArray = { "app", "ban", "ora" }; // the "d" array to be added
Bson update = set("session.ps.$[elem].d", Arrays.asList(dArray));

String idStr = "5e37dc262f5ff4dfc935eb6b";
Bson queryFilter = eq("_id", new ObjectId(idStr));

Document result = coll.findOneAndUpdate(queryFilter, update, updateOptions);
System.out.println(result);

Stejná operace aktualizace v Mongo Shell:

var dArray = [ "app", "ban" ];

db.test.updateOne(
   { _id: ObjectId("5e37dc262f5ff4dfc935eb6b") }, 
   { $set: { "session.ps.$[elem].d" : dArray } },
   {
     arrayFilters: [ { "elem.apn": "abcdef" } ]
   }
)


[UPRAVIT PŘIDAT]

Aktualizace apn současně s novou hodnotou "newVal" a přidání nového prvku řetězce "gua" do d pole (tímto se přidá nové pole, pokud pole neexistuje):

db.test.updateOne(
   { _id: ObjectId("5e37dc262f5ff4dfc935eb6b") }, 
   { 
     $set: { "session.ps.$[elem].apn": "newVal" }
     $push: { "session.ps.$[elem].d" : "gua" } 
   },
   {
     arrayFilters: [ { "elem.apn": "abcdef" } ]
   }
)

Kód Java pro výše uvedený kód Mongo Shell:

List<Bson> arrayFilters = new ArrayList<>();
arrayFilters.add(new Document("elem.apn", "abcdef"));
FindOneAndUpdateOptions updateOptions = 
    new FindOneAndUpdateOptions().arrayFilters(arrayFilters);   

Bson pushUpdate = push("session.ps.$[elem].d", "gua");
Bson setUpdate = set("session.ps.$[elem].apn", "newValue");
Bson update = combine(pushUpdate, setUpdate);

String idStr = "5e37dc262f5ff4dfc935eb6b";
Bson queryFilter = eq("_id", new ObjectId(idStr));

Document result = coll.findOneAndUpdate(queryFilter, update, updateOptions);



  1. Agregace MongoDb Manipulace s daty – objekty do polí

  2. MongoDB aktualizuje objekt pole v poli

  3. Podmíněně zahrnout fáze potrubí agregace

  4. Vytvořte databázový klastr v cloudu pomocí MongoDB Atlas