MongoDB Cheatsheet
Mongosh
- use mongosh to interact with mongodb
$ docker exec -it <mongodb_container_id> /bin/bash
# mongosh --username root
// To show all available databases
show dbs
// Create a new database
// Use a database is also this comment, mongodb will create it if it's not already there
use blog
// List all collections (tables)
db.getCollectionNames()
// Create a collection
db.createCollection("users")
// To insert one
db.users.insertOne({"name": "logan1"})
// To insert many
db.users.insertMany([{"name": "logan2"}, {"name": "logan3"}])
// To find one
db.users.findOne()
// Result:
{ _id: ObjectId('6759b32bb0f5c192b5fc0421'), name: 'Logan1' }
// SQL:
select * from users top 1
// To find many
db.users.find()
// Result:
[
{ _id: ObjectId('6759b32bb0f5c192b5fc0421'), name: 'Logan1' },
{ _id: ObjectId('6759b359b0f5c192b5fc0422'), name: 'Logan2' },
{ _id: ObjectId('6759b359b0f5c192b5fc0423'), name: 'Logan3' }
]
// SQL:
select * from users
Filters
// To create a filter:
var filter = {"name": "Logan1"}
// To apply the filter:
db.users.findOne(filter)
// Result:
{ _id: ObjectId('6759b32bb0f5c192b5fc0421'), name: 'Logan1' }
// SQL:
select * from users where name = "Logan1"
// To find name contains "o":
filter = = {name:{$regex:/o/}}
db.users.find(filter)
// Result:
[
{ _id: ObjectId('6759b359b0f5c192b5fc0422'), name: 'Logan2' },
{ _id: ObjectId('6759b359b0f5c192b5fc0423'), name: 'Logan3' }
]
// SQL:
select * from users where name like '%o%'
// To match one of
db.users.find({name: {$in: ["Logan2", "Logan3"]}})
// Result:
[
{ _id: ObjectId('6759b359b0f5c192b5fc0422'), name: 'Logan2' },
{ _id: ObjectId('6759b359b0f5c192b5fc0423'), name: 'Logan3' }
]
// SQL:
select * from users where name in ("Logan2", "Logan3")
// To patch a document:
db.users.updateOne({name: 'Logan2'}, {$set: {age: 101}})
// Result:
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0
}
// SQL:
update users set age=101 where name = "Logan2"
// To replace a document
db.users.replaceOne({name: 'Logan3'}, {name: 'Logan3', age: 104})
// Result:
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0
}
// SQL:
delete users where name = "Logan3"
insert into users (name, age) values ("Logan3", 104)
// Now see the updated documents
db.users.find()
// Result:
[
{
_id: ObjectId('6759b359b0f5c192b5fc0422'),
name: 'Logan2',
age: 101
},
{
_id: ObjectId('6759b359b0f5c192b5fc0423'),
name: 'Logan3',
age: 104
}
]
// To match using "$and"
db.users.find({name: "Logan2", age: 101})
// Or equivalently:
db.users.find({$and: [{name: 'Logan2'}, {age: 101}]})
// SQL:
select * from users where name="Logan2" and age=101
// To match using "$or"
db.users.find({$or: [{name: 'Logan2'}, {name: 'Logan3'}]})
// SQL:
select * from users where name="Logan2" or name="Logan3"
Delete
// To delete one
var filter = {"name": "Logan1"}
db.users.deleteOne(filter)
// Result:
{ acknowledged: true, deletedCount: 1 }
// Try delete it again will fail:
db.users.deleteOne(filter)
// Result:
{ acknowledged: true, deletedCount: 0 }