       Log.error "PeerDB exception: #{ e }: #{ util.inspect args, depth: 10 }"
 
 class globals.Document._TargetedFieldsObservingField extends globals.Document._TargetedFieldsObservingField
-  setupTargetObservers: =>
+  setupTargetObservers: (updateAll) =>
+    initializing = true
+
     referenceFields = fieldsToProjection @fields
-    @targetCollection.find({}, fields: referenceFields).observeChanges
+    handle = @targetCollection.find({}, fields: referenceFields).observeChanges
       added: catchErrors (id, fields) =>
-        @updateSource id, fields
+        @updateSource id, fields if updateAll or not initializing
 
       changed: catchErrors (id, fields) =>
         @updateSource id, fields
 
       removed: catchErrors (id) =>
         @removeSource id
+
+    if updateAll
+      handle.stop()
+      return
+
+    initializing = false
 
 # Have to refresh with new methods from TargetedFieldsObservingField
 _.extend globals.Document._ReferenceField.prototype,

  updatedWithValue: (id, value) =>
    # Do nothing. Code should not be updating generated field by itself anyway.

class globals.Document extends globals.Document
  @_sourceFieldUpdated: (id, name, value, field) ->
    # TODO: Should we check if field still exists but just value is undefined, so that it is the same as null? Or can this happen only when removing the field?

    for name, value of fields
      @_sourceFieldUpdated id, name, value

  @setupSourceObservers: (updateAll) ->
    return if _.isEmpty @Meta.fields

    sourceFields =
