knowledge/technology/applications/development/MongoDB.md
2024-02-12 15:32:44 +01:00

5.9 KiB

website obj
https://www.mongodb.com application

MongoDB

MongoDB is a popular NoSQL database that is document-oriented and designed for scalability and flexibility. You can work with MongoDB in a GUI with MongoDB Compass.

Docker-Compose

version: '3'
services:
  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: password
    volumes:
      - ./db:/data/db
    ports:
      - "27017:27017"

Usage

Connecting to MongoDB

To connect to MongoDB using the mongo shell:
mongo mongodb://<username>:<password>@<hostname>:<port>/<database>

Replace <username>, <password>, <hostname>, <port>, and <database> with your own values.

Working with Databases

To create a new database: use <database>
To show a list of all databases: show dbs
To switch to a different database: use <database>
To drop a database: use <database>; db.dropDatabase()

Working with Collections

To create a new collection: db.createCollection("<collection>")
To show a list of all collections in the current database: show collections
To drop a collection: db.<collection>.drop()

Inserting Data

To insert a single document: db.<collection>.insertOne(<document>)
To insert multiple documents: db.<collection>.insertMany([<document1>, <document2>, ...])

Querying Data

To find all documents in a collection: db.<collection>.find()
To find documents that match a specific condition: db.<collection>.find(<query>)
To limit the number of documents returned: db.<collection>.find().limit(<limit>)
To sort documents by a field: db.<collection>.find().sort({<field>: <1 or -1>})
To count the number of documents: db.<collection>.count()

Updating Data

To update a single document: db.<collection>.updateOne(<filter>, <update>)
To update multiple documents: db.<collection>.updateMany(<filter>, <update>)
To replace a document: db.<collection>.replaceOne(<filter>, <replacement>)

Deleting Data

To delete a single document: db.<collection>.deleteOne(<filter>)
To delete multiple documents: db.<collection>.deleteMany(<filter>)
To delete all documents in a collection: db.<collection>.deleteMany({})

Filters

Usage:

{ "field": { "$mod": "value" } }
  • $eq: The $eq operator matches documents where the value of a field equals a specified value.
  • $ne: The $ne operator matches documents where the value of a field is not equal to a specified value.
  • $gt: The $gt operator matches documents where the value of a field is greater than a specified value.
  • $gte: The $gte operator matches documents where the value of a field is greater than or equal to a specified value.
  • $lt: The $lt operator matches documents where the value of a field is less than a specified value.
  • $lte: The $lte operator matches documents where the value of a field is less than or equal to a specified value.
  • $in: The $in operator matches documents where the value of a field equals any value in a specified array.
  • $nin: The $nin operator matches documents where the value of a field does not equal any value in a specified array.
  • $and: The $and operator performs a logical AND operation on an array of two or more expressions and selects the documents that satisfy all the expressions.
  • $or: The $or operator performs a logical OR operation on an array of two or more expressions and selects the documents that satisfy at least one of the expressions.
  • $not: The $not operator performs a logical NOT operation on the specified expression and selects the documents that do not match the expression.
  • $type: The $type operator matches documents where a specified field has a specific BSON type.
  • $regex: The $regex operator matches documents where a specified field matches a regular expression.
  • $text: The $text operator performs a text search on the specified field(s).
  • $elemMatch: The $elemMatch operator matches documents where a specified array field contains at least one element that matches all the specified conditions.
  • $size: The $size operator matches documents where a specified array field has a specific size.
  • $exists: The $exists operator matches documents that contain or do not contain a specified field, including documents where the field value is null.

Example:

db.users.find(
{ 
	$and: [
		{ status: "active" },
		{ age: { $gt: 28 } }
	]
}
)

Update Modifiers

  • $set: The $set operator updates the value of a field in a document.
  • $unset: The $unset operator removes a field from a document.
  • $inc: The $inc operator increments the value of a field in a document.
  • $mul: The $mul operator multiplies the value of a field in a document.
  • $min: The $min operator updates the value of a field in a document if the new value is lower than the existing value.
  • $max: The $max operator updates the value of a field in a document if the new value is higher than the existing value.
  • $rename: The $rename operator renames a field in a document.
  • $addToSet: The $addToSet operator adds a value to an array field in a document if the value does not already exist in the array.
  • $push: The $push operator appends a value to an array field in a document.
  • $pull: The $pull operator removes a value from an array field in a document.
  • $currentDate: The $currentDate operator sets the value of a field in a document to the current date and time.
  • $each: The $each¥ operator can be used with $addToSet and $push to append multiple values to an array field in a document.
  • $sort: The $sort operator can be used with $push to sort the elements in an array field in a document.

Example:

db.users.updateOne(
  { name: "John Doe" },
  {
    $set: { age: 35 },
    $addToSet: { interests: "Hiking" },
    $unset: { status: "" }
  }
)