Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

logstash 1.5.4: mongodb output plugin support for update with $set operator #16

Open
stevecalvert opened this issue Sep 30, 2015 · 14 comments

Comments

@stevecalvert
Copy link

No description provided.

@stevecalvert
Copy link
Author

Hi all, I'm using the HTTP input plugin to receive HTTP POST/PATCH requests, and would like to map the PATCH in the mongodb output plugin to an update on an existing document based on the $set operator. I'm not familiar with Ruby, but checking the latest mongodb.rb, it looks like only insert_one() is used. Are there any plans to support update_one() or other mechanisms to update an existing Mongo document?

@stevecalvert stevecalvert changed the title Logstash 1.5.4 support for logstash 1.5.4: mongodb output plugin support for update with $set operator Sep 30, 2015
@guyboertje
Copy link
Contributor

@stevecalvert - In general the LS outputs are append only. Consider this blog article from LinkedIn. You turn your collection into a journal showing how the document changed over time.

@jordansissel
Copy link
Contributor

@guyboertje on the other hand, we support action of delete, insert, create, update --- for the elasticsearch output. I'm open to doing so for the mongodb output; in which case we'll need to add another setting to let users set whatever the equivalent to the 'document_id' setting would be.

@guyboertje
Copy link
Contributor

@stevecalvert @jordansissel - in Mongo we could use update with the upsert option. https://docs.mongodb.org/manual/reference/method/db.collection.update/#upsert-parameter
Obviously driven by config options, to allow the user to specify which field contains the query key for the upsert. e.g.

config :upsert_query_key, :validate => :string, :default => "_id"
config :upsert, :validate => :boolean, :default => false.

@sdcharle
Copy link

Has this been ruled out as something that will be added? I'm needing upsert functionality for a project I'm working on so I'm evaluating options. This plugin works great but I need some way to handle a record getting sent thru with an update....

@joelpermanas
Copy link

Hi, Is there any update on this issue ?

@jsvd
Copy link
Member

jsvd commented Apr 10, 2018

@joelpermanas any update will be publicly visible here. PR contributions are welcome :)

@devchristianschroeder
Copy link

I would like to have this feature also, please.

Thank you for the great product.

@colinsurprenant
Copy link
Contributor

relates to #26 and #54

@nilskuhn
Copy link

nilskuhn commented Aug 7, 2020

Did anybody start with an implementation or plans to do so?

@nilskuhn
Copy link

nilskuhn commented Sep 1, 2020

I am implementing this and I plan to use these config flags:

config :action, :validate => :string, :required => true
config :query_key, :validate => :string, :required => false, :default => "_id"
config :query_value, :validate => :string, :required => false
config :upsert, :validate => :boolean, :required => false, :default => false

Where action may be one of insert (the default, behaves like plugin does now), update or replace. For update and replace, query to find document to update/replace is built like this:

:filter => {@query_key => @query_value}

Where _id would be the default value for @query_key config setting. By setting upsert to true one could enable upsert mode for update/replace. For insert this setting wouldn't have any effect.
I tried to align naming of config settings to elasticsearch output but I think, at least for me, upsert is much more clear than doc_as_upsert.

Any comments? Suggestions?

@nilskuhn
Copy link

I opened a PR for this (see above). Could anybody please take a look and let me know whether my changes make sense for you, too?
It's working for us so far.

@21stcaveman
Copy link

21stcaveman commented Feb 7, 2023

has there been any traction on this? 7+ years open, PR request pending almost 3 years now...

@AndreaFranchini
Copy link

Up!
I'm also interested in this, it's very limiting the absence of the mongo upsert in the output plugin.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests