Skip to main content

MongoDB Cheatsheet

Mongosh

  • use mongosh to interact with mongodb
$ docker exec -it <mongodb_container_id> /bin/bash
# mongosh --username root
MongoSHGolangSQL
// 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 }