Class MongoDBConverter.UpdateBuilder

java.lang.Object
org.nuxeo.ecm.core.storage.mongodb.MongoDBConverter.UpdateBuilder
Enclosing class:
MongoDBConverter

public class MongoDBConverter.UpdateBuilder extends Object
Update list builder to prevent several updates of the same field.

This happens if two operations act on two fields where one is a prefix of the other.

Example: Cannot update 'mylist.0.string' and 'mylist' at the same time (error 16837)

Since:
5.9.5
  • Field Details

    • set

      protected final org.bson.Document set
    • unset

      protected final org.bson.Document unset
    • push

      protected final org.bson.Document push
    • pull

      protected final org.bson.Document pull
    • inc

      protected final org.bson.Document inc
    • conditionsAndUpdates

      protected final MongoDBConverter.ConditionsAndUpdates conditionsAndUpdates
    • update

      protected org.bson.Document update
    • prefixKeys

      protected Set<String> prefixKeys
    • keys

      protected Set<String> keys
  • Constructor Details

    • UpdateBuilder

      public UpdateBuilder()
  • Method Details

    • build

    • processStateDiff

      protected void processStateDiff(State.StateDiff diff, String prefix)
    • processListDiff

      protected void processListDiff(State.ListDiff listDiff, String prefix)
    • processDelta

      protected void processDelta(Delta delta, String prefix)
    • processValue

      protected void processValue(String name, Serializable value)
    • newUpdate

      protected void newUpdate()
    • update

      protected void update(String op, String bsonKey, Object val)
    • checkForConflict

      protected void checkForConflict(String key)
      Checks if the key conflicts with one of the previous keys.

      A conflict occurs if one key is equals to or is a prefix of the other.

    • conflictKeys

      protected boolean conflictKeys(String key, List<String> subkeys)
    • getPrefixKeys

      protected List<String> getPrefixKeys(String key)
      return a list of parents key

      foo.0.bar -> [foo, foo.0, foo.0.bar]