insertOne
insertOne
is a Change Type in the Liquibase Open Source and Liquibase Pro extensions for MongoDB that inserts a single document into a collection.
Uses
The Liquibase Pro extension for MongoDB includes several modeled Change Types from the Liquibase Open Source version. These let you specify a few MongoDB commands using Liquibase XML, JSON, and YAML changelogs.
insertOne
is one such Change Type. You can use it to insert a single document into a collection in your database.
If you want to insert multiple documents at once, use insertMany
instead.
Note: If you want to specify mongosh
statements in your XML, JSON, and YAML changelogs, use the mongo
and mongoFile
Change Types instead.
Run
To run this Change Type, follow these steps:
- Add the Change Type to your changeset, as shown in the examples on this page.
- Specify any required attributes. Use the table on this page to see which ones your database requires.
- Deploy your changeset by running the
update
command:
liquibase update
Available attributes
For more information, see db.collection.insertOne().
Tip: You must specify all top-level attributes marked as required. If you specify an optional attribute, you must also specify any nested attributes that it requires.
Name | Type | Description | Requirement |
---|---|---|---|
collectionName
|
String | Name of the collection to insert an object into | Required |
document
|
JSON object | JSON that defines the object to insert | Required |
Examples
databaseChangeLog:
- changeSet:
id: 2
author: your.name
changes:
- insertOne:
collectionName: towns_yaml
document: |
{
name: "New York",
population: 222000000,
lastCensus: ISODate("2016-07-01"),
famousFor: [ "the MOMA", "food", "Derek Jeter" ],
mayor: {
name: "Bill de Blasio",
party: "D"
}
}
- rollback:
{
"databaseChangeLog": [
{
"changeSet": {
"id": "2",
"author": "your.name",
"changes": [
{
"insertOne": {
"collectionName": "towns_json",
"document": {
"$rawJson": {
"name": "New York",
"population": 222000000,
"famousFor": [ "the MOMA", "food", "Derek Jeter" ],
"mayor": {
"name": "Bill de Blasio",
"party": "D"
}
}
}
}
}
],
"rollback": ""
}
}
]
}
The Liquibase MongoDB Open Source extension uses a unique mongodb
XML namespace and XSD files in the changelog header. However, the ext
prefix used with other extensions is backwards-compatible:
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mongodb="http://www.liquibase.org/xml/ns/mongodb"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd
http://www.liquibase.org/xml/ns/mongodb
http://www.liquibase.org/xml/ns/mongodb/liquibase-mongodb-latest.xsd">
<changeSet id="2" author="your.name">
<mongodb:insertOne collectionName="towns">
<mongodb:document>
{
name: "New York",
population: 222000000,
lastCensus: ISODate("2016-07-01"),
famousFor: [ "the MOMA", "food", "Derek Jeter" ],
mayor: {
name: "Bill de Blasio",
party: "D"
}
}
</mongodb:document>
</mongodb:insertOne>
<rollback>
<mongodb:runCommand>
<mongodb:command>
{
delete: "towns",
deletes: [{q: { name: "New York"}, limit: 1}]
}
</mongodb:command>
</mongodb:runCommand>
</rollback>
</changeSet>
</databaseChangeLog>
Database support
This Change Type is only supported for MongoDB. It does not support auto rollback.