Fixes#11 by making no-match upserts run through the same EmbJSON processing path as normal updates.
Before this change, update(..., upsert=True) only called process_update(...) when doc_ids existed before the Mongo update. If the filter matched nothing, Mongo inserted the new document but xText / xImage fields were left raw:
no chunks were written back into xText
no Pinecone vector tasks were queued
no image embedding/upload tasks were queued
semantic query could not find the upserted content
Changes
Add a small helper to derive the upsert document ID from _id equality filters or $setOnInsert._id.
Generate and inject a deterministic _id into $setOnInsert when Mongo would otherwise create one implicitly.
Use that ID to run the existing process_update(...) path before update_many(..., upsert=True) persists the document.
This keeps existing matched-update behavior unchanged. The extra branch only runs when upsert=True and the pre-update filter finds no existing document.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #11 by making no-match upserts run through the same EmbJSON processing path as normal updates.
Before this change, update(..., upsert=True) only called process_update(...) when doc_ids existed before the Mongo update. If the filter matched nothing, Mongo inserted the new document but xText / xImage fields were left raw:
Changes
Validation
Notes
This keeps existing matched-update behavior unchanged. The extra branch only runs when upsert=True and the pre-update filter finds no existing document.