Mongodb: Difference between revisions

From Bitpost wiki
No edit summary
No edit summary
Line 1: Line 1:
==== Installation ====
== UI tools ==
mh-install-mongodb
 
Manually:
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt update && sudo apt install -y mongodb-org # or mongodb-org-shell for just client shell
 
==== UI tools =====


* MongoDB_Admin
* MongoDB_Admin
Line 17: Line 9:
  ~/apps/robo3t/bin/robo3t &
  ~/apps/robo3t/bin/robo3t &


==== Querying ====
== Querying ==


* OR
* OR
Line 26: Line 18:
  db.inventory.remove( { type : { $nin: ["Apple", "Mango"] } } )
  db.inventory.remove( { type : { $nin: ["Apple", "Mango"] } } )


==== Run a script or statement from command line ====
== Run a script or statement from command line ==
  # This will drop the bookstore db
  # This will drop the bookstore db
  mongo bookstore --eval "printjson(db.dropDatabase())"
  mongo bookstore --eval "printjson(db.dropDatabase())"


==== Convert a single node to a replica set ====
== Upgrade ==
Upgrading is a NIGHTMARE and, like postgres, you should export / import the data to guarantee you don't lose it.
 
At LEAST do a mongodump before starting!
 
The problem is... mongo devs are TOO LAZY to write the code to auto-update.  So you have to follow their stupid little instructions, which basically involve moving through upgrade steps across specific versions.  And each version requires a bunch of apt foo.  It SUCKS and MAKES ME SAD.  It is utterly shameful.
 
=== Upgrade 3.6 to 4.0 ===
mongo
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) # make sure it's 3.6
cfg = rs.conf();
cfg.protocolVersion=1;
rs.reconfig(cfg);
quit()
Now upgrade apt version, following [https://www.mongodb.com/docs/v4.0/tutorial/install-mongodb-on-ubuntu/ 4.0 install instructions]...
wget -qO - https://www.mongodb.org/static/pgp/server-4.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
# ignore the fact that that was for 18.04.  Fucking mongo morons.
sudo apt update
sudo apt-get install -y mongodb-org
# WOW it was a fuckign mess, had to do this, then redo:
sudo apt -f remove mongo*
sudo apt-get install -y mongodb-org
# OMG they just fucking HAD to rename the config file!
diff /etc/mongodb.conf /etc/mongod.conf
# migrate the old settings to the new location and push to git
 
=== Upgrade 4.0 to 4.2 ===
https://www.mongodb.com/docs/v4.2/release-notes/4.2-upgrade-replica-set/
 
== Convert a single node to a replica set ==
This is apparently required for transactions to work...?
This is apparently required for transactions to work...?
* CONVERTING TO SINGLE-NODE REPLICA SET:
* CONVERTING TO SINGLE-NODE REPLICA SET:
Line 45: Line 67:
   
   
         # hit return after a moment to ensure it becomes PRIMARY
         # hit return after a moment to ensure it becomes PRIMARY
== Installation ==
mh-install-mongodb
Manually:
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt update && sudo apt install -y mongodb-org # or mongodb-org-shell for just client shell

Revision as of 17:37, 19 April 2022

UI tools

  • MongoDB_Admin
git clone https://github.com/hatamiarash7/MongoDB_Admin
cd MongoDB_Admin
npm start &
  • Robo 3T
~/apps/robo3t/bin/robo3t &

Querying

  • OR
{"$or": [{"firstName": "Michael"}, {"firstName": "Tom"}]}
  • To remove all documents that do not have a certain value:
db.inventory.remove( { type : { $ne: "food" } } )
  • To remove all documents that do not have a range of values:
db.inventory.remove( { type : { $nin: ["Apple", "Mango"] } } )

Run a script or statement from command line

# This will drop the bookstore db
mongo bookstore --eval "printjson(db.dropDatabase())"

Upgrade

Upgrading is a NIGHTMARE and, like postgres, you should export / import the data to guarantee you don't lose it.

At LEAST do a mongodump before starting!

The problem is... mongo devs are TOO LAZY to write the code to auto-update. So you have to follow their stupid little instructions, which basically involve moving through upgrade steps across specific versions. And each version requires a bunch of apt foo. It SUCKS and MAKES ME SAD. It is utterly shameful.

Upgrade 3.6 to 4.0

mongo
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) # make sure it's 3.6
cfg = rs.conf();
cfg.protocolVersion=1;
rs.reconfig(cfg);
quit()

Now upgrade apt version, following 4.0 install instructions...

wget -qO - https://www.mongodb.org/static/pgp/server-4.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
# ignore the fact that that was for 18.04.  Fucking mongo morons.
sudo apt update
sudo apt-get install -y mongodb-org
# WOW it was a fuckign mess, had to do this, then redo:
sudo apt -f remove mongo*
sudo apt-get install -y mongodb-org
# OMG they just fucking HAD to rename the config file!
diff /etc/mongodb.conf /etc/mongod.conf
# migrate the old settings to the new location and push to git

Upgrade 4.0 to 4.2

https://www.mongodb.com/docs/v4.2/release-notes/4.2-upgrade-replica-set/

Convert a single node to a replica set

This is apparently required for transactions to work...?

  • CONVERTING TO SINGLE-NODE REPLICA SET:
       sudo emacs -nw /etc/mongod.conf
           # -----------------------
           # MBM enable replication
           replication:
               replSetName: esrs1
           # -----------------------

       sudo service mongod restart
       sudo mongo # may take a minute to be available...
         rs.initiate()

       # hit return after a moment to ensure it becomes PRIMARY

Installation

mh-install-mongodb

Manually:

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt update && sudo apt install -y mongodb-org # or mongodb-org-shell for just client shell