MongoDB Cheatsheet
Mongosh
- use mongosh to interact with mongodb
$ docker exec -it <mongodb_container_id> /bin/bash
# mongosh --username root
MongoSH | Golang | SQL |
|---|
// Show all available databases
show dbs
|
|
// Find one
{
"id": 10,
"username": "alanpartridge",
"email": "alan@alan.com",
"password_hash": "$2a$10$uhUIUmVWVnrBWx9rrDWhS.CPCWCZsyqqa8./whhfzBZydX7yvahHS",
"password_salt": "$2a$10$uhUIUmVWVnrBWx9rrDWhS.",
"created_at": "2015-02-14T20:45:26.433Z",
"updated_at": "2015-02-14T20:45:26.540Z"
}
|
json
{
"id": 10,
"username": "alanpartridge",
"email": "alan@alan.com",
"password_hash": "$2a$10$uhUIUmVWVnrBWx9rrDWhS.CPCWCZsyqqa8./whhfzBZydX7yvahHS",
"password_salt": "$2a$10$uhUIUmVWVnrBWx9rrDWhS.",
"created_at": "2015-02-14T20:45:26.433Z",
"updated_at": "2015-02-14T20:45:26.540Z"
}
|
|
---
// To show all available databases
show dbs
// Createcreate aor new database
// Useuse a database is also this comment, mongodb will create it if it's not already there
use blog
// Listshow all collections
(tables)
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"
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 }