# Update One

**Update One** node is designed to modify a single specific record in a database based on a given query. It's useful when you need to update the information of a particular document that matches specified conditions.

This node is particularly valuable when you want to modify a unique record or when you're certain that only one record should be updated based on your criteria. If multiple records match the query, only the **first** matching record will be updated.

### Properties Panel

| **Field**           | **Description**                                                       | **Required** | **Default** |
| ------------------- | --------------------------------------------------------------------- | ------------ | ----------- |
| Node name           | [Node Name](/flow-builder/node-name.md)                               | true         | -           |
| Database collection | Database collection in which you want to update a specific document   | true         | -           |
| Query Snippet       | Query to identify which document needs to be modified                 | false        | -           |
| Update Snippet      | Object which which will be used to replace or update current document | true         | -           |
| Upsert              | Insert if document does not exist                                     | false        | false       |

### Usage

1. Select the database collection you want to update.
2. Define your query to match the desired record. For example: `{ "user_id": { "$eq": "12345" } }`
3. Specify the update snippet to apply the desired modifications. For example: `{ "$set": { "status": "active" } }`
4. Set the upsert option to true or false based on whether you want to create a new document if no match is found.

### Returns

This node does not returns any value.

### Example

Let's say you want to update a user's status to `active` based on their email address, and create the user if they don't exist:

1. Set Database Collection to `users`
2. Set Query to `{ "email": { "$eq": "user@example.com" } }`
3. Set Update snippet to `{ "$set": { "status": "active", "last_login": "2024-07-22T10:00:00Z" } }`
4. Set Upsert to true

This will either update an existing user's status and last login time, or create a new user with these details if no matching user is found.

### Best Practices

* Ensure your query is specific enough to target only the intended document.
* Use atomic update operators (like $set, $inc, $push) to perform efficient updates without retrieving the entire document.
* Be cautious when using `upsert=true`, as it can create new documents. Make sure your update snippet includes all necessary fields for a new document.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.cosmocloud.io/flow-builder/node-types/database-nodes/update-one.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
