MongoDB Cheatsheet
Mongosh
- use mongosh to interact with mongodb
$ docker exec -it <mongodb_container_id> /bin/bash
# mongosh --username root
// show all databases
show dbs
// create or use a database
use blog
// show all collections
db.getCollectionNames()
// Find One
db.users.findOne(filter)
// Find Many
db.users.findMany(filter)
// Insert One
db.users.insertOne({name:"Logan1"}
// Insert Many
db.users.insertMany([
{name:"Logan1"},
{name:"Logan2"}
])
// Update One
db.users.updateOne(
{name:"Logan1"},
{$set:{age:101, gender:"M"}}
)
// Update Many
db.users.updateMany(
{age:101},
{$set:{discount:"Old People Discount"}}
)
// Replace One
db.users.replaceOne(
{name: 'Logan3'},
{name: 'Logan3', age: 104}
)
// Upsert (update or insert)
// Available for updateOne, replaceOne, and updateMany
db.users.replaceOne(
{name: 'Logan3'},
{$set: {name: 'Logan3', age: 104}},
{upsert: true}
)
// Delete One
db.users.deleteOne({name: "Logan1"})
// Delete Many
db.users.deleteMany({age: {$gt: 50, $lt:100}})
// Query AND
// Query OR
// Query IN
// Query Regex
// Query embeded documents
// 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"