Storing and retrieving data with MongoDB
Storing and retrieving data with MongoDB
> show dbs
local 0.03125GB
test (empty)
> show collections
startup_log
system.indexes
users
>db.users.insert({'name':'root','uid':'0001'})
local 0.03125GB
test (empty)
> show collections
startup_log
system.indexes
users
> db.createCollection('users')
>db.users.find()
{ "_id" : ObjectId("58b334b1f4d36fb19595a7a9"), "name" : "root", "uid" : "0001" }
Make sure that you have installed and configured MongoDB. You can also use the MongoDB installation on a remote server.
Follow these steps to store and retrieve data with MongoDB:
- Open a shell to interact with the Mongo server:
$ mongo
- To open a shell on a remote server, use the command given. Replace
server_ip
andport
with the respective values:$ mongo server_ip:port/db
- To create and start using a new database, type
use dbname
. Since schemas in MongoDB are dynamic, you do not need to create a database before using it:> use testdb
- You can type
help
in Mongo shell to get a list of available commands and help regarding a specific command:> help
: Let’s insert our first document:> db.users.insert({‘name’:’ubuntu’,’uid’:1001})
- To view the created database and collection, use the following commands:
> show dbs
> show collections
- You can also insert multiple values for a key, for example, which groups a user belongs to:
> db.users.insert({‘name’:’root’,’uid’:1010, ‘gid’:[1010, 1000, 1111]})
- Check whether a document is successfully inserted:
> db.users.find()
- To get a single record, use
findOne()
:> db.users.findOne({uid:1010})
- To update an existing record, use the
update
command as follows:> db.users.update({name:’ubuntu’}, {$set:{uid:2222}})
- To remove a record, use the
remove
command. This will remove all records with aname
equal toubuntu
:> db.users.remove({‘name’:’ubuntu’})
- To drop an entire collection, use the
drop()
command:> db.users.drop()
- To drop a database, use the
dropDatabase()
command:> db.users.dropDatabase()
The preceding examples show very basic CRUD operations with the MongoDB shell interface. MongoDB shell is also a JavaScript shell. You can execute all JS commands in a MongoDB shell. You can also modify the shell with the configuration file,
~/.mongorc.js
. Similar to shell, MongoDB provides language-specific drivers, for example, MongoDB PHP drivers to access MongoDB from PHP.
MongoDB works on the concept of collections and documents. A collection is similar to a table in MySQL and a document is a set of key value stores where a key is similar to a column in a MySQL table. MongoDB does not require any schema definitions and accepts any pair of keys and values in a document. Schemas are dynamically created. In addition, you do not need to explicitly create the collection. Simply type a collection name in a command and it will be created if it does not already exist. In the preceding example,
users
is a collection we used to store all data. To explicitly create a collection, use the following command:> use testdb > db.createCollection(‘users’)
You may be missing the
where
clause in MySQL queries. We have already used that with the findOne()
command:> db.users.findOne({uid:1010})
You can use
$lt
for less than, $lte
for less than or equal to, $gt
for greater than, $gte
for greater than or equal to, and $ne
for not equal:> db.users.findOne({uid:{$gt:1000}})
In the preceding example, we have used the
where
clause with the equality condition uid=1010
. You can add one more condition as follows:> db.users.findOne({uid:1010, name:’root’})
To use the
or
condition, you need to modify the command as follows:> db.users.find ({$or:[{name:’ubuntu’}, {name:’root’}]})
You can also extract a single key (column) from the entire document. The
find
command accepts a second optional parameter where you can specify a select criteria. You can use values 1
or 0
. Use 1
to extract a specific key and 0
otherwise:> db.users.findOne({uid:1010}, {name:1})
> db.users.findOne({uid:1010}, {name:0})
You can install a web interface to manage the MongoDB installation. There are various open source web interfaces listed on Mongo documentation at http://docs.mongodb.org/ecosystem/tools/administration-interfaces/.
When you start a mongo shell for the first time, you may see a warning message regarding
transperent_hugepage
and defrag. To remove those warnings, add the following lines to /etc/init/mongod.conf
, below the $DAEMONUSER /var/run/mongodb.pid
line:if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled fi if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi
Find more details on this Stack Overflow post at http://stackoverflow.com/questions/28911634/how-to-avoid-transparent-hugepage-defrag-warning-from-mongodb
- Mongo CRUD tutorial at https://docs.mongodb.org/manual/applications/crud/
- MongoDB query documents at https://docs.mongodb.org/manual/tutorial/query-documents/
Comments
Post a Comment