Slide 15
Slide 15 text
Step 2: Build the
replication
MMM_REPL_FLAG = '__mmm'
def trigger(ts, h, op, ns, o, o2=None, b=False):
if op == 'i':
if o.get(MMM_REPL_FLAG) == self.id:
return
o.setdefault(MMM_REPL_FLAG, src_id)
collection.insert(o)
elif op == 'u':
upsert = b
if any(k.startswith('$') for k in o):
# With modifiers, check & update setters
setters = o.setdefault('$set', {})
else:
# Without modifiers, update doc directly
setters = o
if setters.get(MMM_REPL_FLAG) == self.id:
return
setters.setdefault(MMM_REPL_FLAG, src_id)
collection.update(o2, o, upsert)
elif op == 'd':
justOne = b
collection.remove(o)
Tuesday, December 4, 12