--- website: https://www.mongodb.com obj: 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](MongoDB%20Compass.md). ## Docker-Compose ```yml 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://:@:/` Replace ``, ``, ``, ``, and `` with your own values. ### **Working with Databases** To create a new database: `use ` To show a list of all databases: `show dbs` To switch to a different database: `use ` To drop a database: `use ; db.dropDatabase()` ### **Working with Collections** To create a new collection: `db.createCollection("")` To show a list of all collections in the current database: `show collections` To drop a collection: `db..drop()` ### **Inserting Data** To insert a single document: `db..insertOne()` To insert multiple documents: `db..insertMany([, , ...])` ### **Querying Data** To find all documents in a collection: `db..find()` To find documents that match a specific condition: `db..find()` To limit the number of documents returned: `db..find().limit()` To sort documents by a field: `db..find().sort({: <1 or -1>})` To count the number of documents: `db..count()` ### **Updating Data** To update a single document: `db..updateOne(, )` To update multiple documents: `db..updateMany(, )` To replace a document: `db..replaceOne(, )` ### **Deleting Data** To delete a single document: `db..deleteOne()` To delete multiple documents: `db..deleteMany()` To delete all documents in a collection: `db..deleteMany({})` ### Filters Usage: ```json { "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](../../files/BSON.md) type. - `$regex`: The `$regex` operator matches documents where a specified field matches a [regular expression](../../tools/Regex.md). - `$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:** ```js 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:** ```js db.users.updateOne( { name: "John Doe" }, { $set: { age: 35 }, $addToSet: { interests: "Hiking" }, $unset: { status: "" } } ) ```